Android打开pdf文件

我正在开发一个Android应用程序,我必须打开一些文件

这是我的代码使用意图:

public class FacturaActivity extends Activity { (...) public void downloadInvoice(View view) { File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() +"/"+ filename); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFile(file),"application/pdf"); intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); startActivity(intent); } } 

文件在SD卡的根目录下,我可以手动打开它。

问题

应用程序到达startActivity(intent)时closures。 我认为这个问题出现在AndroidManifest.xml文件中,但是我不知道如何正确放置它。

AndroidManifest.xml中

 <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="8" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" android:name="###.MyApplication" > <!--cant show complete name--> <activity android:name="###.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".FacturaActivity" > </activity> </application> 

logcat的

 07-03 15:49:13.094: E/AndroidRuntime(1032): FATAL EXCEPTION: main 07-03 15:49:13.094: E/AndroidRuntime(1032): java.lang.IllegalStateException: Could not execute method of the activity (...) 07-03 15:49:13.094: E/AndroidRuntime(1032): Caused by: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=file:///mnt/sdcard/201209_F2012212782.PDF typ=application/pdf flg=0x40000000 } 07-03 15:49:13.094: E/AndroidRuntime(1032): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1408) 07-03 15:49:13.094: E/AndroidRuntime(1032): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378) 07-03 15:49:13.094: E/AndroidRuntime(1032): at android.app.Activity.startActivityForResult(Activity.java:2817) 07-03 15:49:13.094: E/AndroidRuntime(1032): at android.app.Activity.startActivity(Activity.java:2923) 

你能帮我完成AndroidManifest吗? 或者我怎样才能打开该pdf?

问题是,没有安装应用程序来处理打开PDF。 您应该使用Intent Chooser,如下所示:

 File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() +"/"+ filename); Intent target = new Intent(Intent.ACTION_VIEW); target.setDataAndType(Uri.fromFile(file),"application/pdf"); target.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); Intent intent = Intent.createChooser(target, "Open File"); try { startActivity(intent); } catch (ActivityNotFoundException e) { // Instruct the user to install a PDF reader here, or something } 
 String dir="/Attendancesystem"; public void displaypdf() { File file = null; file = new File(Environment.getExternalStorageDirectory()+dir+ "/sample.pdf"); Toast.makeText(getApplicationContext(), file.toString() , Toast.LENGTH_LONG).show(); if(file.exists()) { Intent target = new Intent(Intent.ACTION_VIEW); target.setDataAndType(Uri.fromFile(file), "application/pdf"); target.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); Intent intent = Intent.createChooser(target, "Open File"); try { startActivity(intent); } catch (ActivityNotFoundException e) { // Instruct the user to install a PDF reader here, or something } } else Toast.makeText(getApplicationContext(), "File path is incorrect." , Toast.LENGTH_LONG).show(); }