2
File file = new File("android.resource://com.baltech.PdfReader/assets/raw/"+filename);

                    if (file.exists()) {
                    Uri targetUri = Uri.fromFile(file);
                    Intent intent = new Intent(Intent.ACTION_VIEW);
                    intent.setDataAndType(targetUri, "application/pdf");
                        try {
                            startActivity(intent);
                        } 
                        catch (ActivityNotFoundException e) {
                            Toast.makeText(PdfReaderActivity.this, "No Application Available to View PDF", Toast.LENGTH_SHORT).show();
                        }

assetsフォルダにある.pdfファイルを読みたいです。ファイル名に指定するパス。助けてください。ありがとう

4

3 に答える 3

3

これに対する答えがすでに得られているかどうかはわかりませんが、かなり古いようですが、これは私にとってはうまくいきました。

//you need to copy the input stream to a new file, so store it elsewhere
//this stores it to the sdcard in a new folder "MyApp"
String filename = Environment.getExternalStorageDirectory().getAbsolutePath() + "/MyApp/solicitation_form.pdf";

AssetManager assetManager = getAssets();

try {
    InputStream pdfFileStream = assetManager.open("solicitation_form.pdf");
    CreateFileFromInputStream(pdfFileStream, filename);

} catch (IOException e1) {
    e1.printStackTrace();
}

File pdfFile = new File(filename); 

CreateFileFromInputStream 関数は次のとおりです。

public void CreateFileFromInputStream(InputStream inStream, String path) throws IOException {
    // write the inputStream to a FileOutputStream
    OutputStream out = new FileOutputStream(new File(path));

    int read = 0;
    byte[] bytes = new byte[1024];

    while ((read = inStream.read(bytes)) != -1) {
        out.write(bytes, 0, read);
    }

    inStream.close();
    out.flush();
    out.close();

}

これがこれを読んでいる他の誰かに役立つことを本当に願っています。

于 2013-03-07T21:20:08.930 に答える
1

assets ファイルは apk ファイル内に格納されるため、assets フォルダーの絶対パスはありません。バッファーとして使用される新しいファイルを作成する回避策を使用する場合があります。

AssetManager を使用する必要があります。

AssetManager mngr = getAssets();
InputStream ip = mngr.open(<filename in the assets folder>);
File assetFile = createFileFromInputStream(ip);


private File createFileFromInputStream(InputStream ip);

try{
   File f=new File(<filename>);
   OutputStream out=new FileOutputStream(f);
   byte buf[]=new byte[1024];
   int len;
   while((len=inputStream.read(buf))>0)
     out.write(buf,0,len);
  out.close();
  inputStream.close();

 }catch (IOException e){}
}
}
于 2012-04-13T08:14:01.773 に答える