3

我已经实现了以下内容,它可以在 HTC Desire (Android 2.2) 上轻松运行。

Uri uri = Uri.parse("content://com.package.app.AssetProvider/"+"document.pdf");
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setDataAndType(uri, "application/pdf");
try 
{
   startActivity(intent);
} 
catch (ActivityNotFoundException e) 
{
   Toast.makeText(this, 
        "You have PDF reader installed!", 
            Toast.LENGTH_SHORT).show();
}

在我的内容提供者中,我实现了 openFile 方法:

@Override
public ParcelFileDescriptor openFile(Uri uri, String mode)
throws FileNotFoundException {
            Log.d(TAG, " openFile ");
    try {
        AssetManager am = context.getAssets();
        InputStream is = am.open(uri.getLastPathSegment());
        File dir = new File("data/data/"+ PACKAGE_NAME +"/files/");
        dir.mkdirs();
        File file = new File("data/data/"+ PACKAGE_NAME +"/files/outFile.pdf");
        file.createNewFile();
        OutputStream out=new FileOutputStream(file);
        byte buf[]=new byte[1024];
        int len;
        while((len=is.read(buf))>0)
            out.write(buf,0,len);
        out.close();
        is.close();
        parcel = ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_WRITE);
    }
    catch (Exception e) {
        Log.e("Exception",e.toString());
    }

    return parcel;
}

问题是在三星 Galaxy S II (Android 2.3.5)、HCT Wildfire (2.2.1) 和 HTC Sensation (Android 2.3.4) 上没有调用 openFile()方法。但是在每个设备上都会调用 onCreate() 方法。

请问有谁可以帮忙吗?

4

0 回答 0