我将我的pdf查看器应用添加到"使用"完成操作pdf文件列表。但如果我在列表上运行一个文件,应用程序就会关闭。
我在onCreate方法和清单文件中进行了意图过滤,但我无法弄清楚如何修复此错误。
PdfActivity.java
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pdf); //xml file for pdf view page
Intent intent = getIntent();
if(intent != null) {
if(Intent.ACTION_VIEW.equals(intent.getAction())) {
startActivity(intent);
}
}
init();
}
的AndroidManifest.xml
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".PdfActivity"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="content" />
<data android:scheme="file" />
<data android:mimeType="application/pdf" />
</intent-filter>
</activity>
</application>
请帮我解决这个问题。
答案 0 :(得分:1)
试试这个
//Method to generate a MIME Type
private static String getMimeType(String url) {
String type = null;
String extension = MimeTypeMap.getFileExtensionFromUrl(url);
if (extension != null) {
type = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
}
return type;
}
//Method to generate File URI
private static Uri getFileUri(String filePath) {
Uri fileUri = null;
File file = new File(filePath);
try {
if (Build.VERSION.SDK_INT >= 24) {
Method m = StrictMode.class.getMethod("disableDeathOnFileUriExposure");
m.invoke(null);
}
fileUri = Uri.fromFile(file);
} catch (Exception e) {
e.printStackTrace();
}
return fileUri;
}
//Intent
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(getFileUri(file_path), getMimeType(file_path));
startActivity(intent);