ActivityNotFoundException on Android 7.1.1



我有一个应用程序,该应用程序打开一个pdf文件,我们单击按钮。它在所有版本的Android上都有工作,但它在Android 7.1.1上崩溃,我不知道为什么:/

这些是我研究的相关问题

atpertion notfoundException启动

没有发现可以处理意图飞溅屏幕的活动

我以主动脉打开文件的功能:

private void readPDF({
    File f = new File(getFilesDir(), "toto.pdf");
    if (!f.exists()) {
        AssetManager assets=getResources().getAssets();
        try {
            copy(assets.open("toto.pdf"), f);
        }
        catch (IOException e) {
            Log.e("FileProvider", "Exception copying from assets", e);
        }
    }
    Intent intent = new Intent(Intent.ACTION_VIEW);
    Uri uri = getUriForFile(this, getApplicationContext().getPackageName() + ".fileprovider", f);
    intent.setDataAndType(uri, "application/pdf");
    intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    revokeUriPermission(uri, Intent.FLAG_GRANT_READ_URI_PERMISSION);
    startActivity(intent);
}
private void copy(InputStream in, File dst) throws IOException {
    FileOutputStream out=new FileOutputStream(dst);
    byte[] buf=new byte[1024];
    int len;
    while ((len=in.read(buf)) > 0) {
        out.write(buf, 0, len);
    }
    in.close();
    out.close();
}

我的清单:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.fr">
<application
    android:allowBackup="true"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <provider
        android:name="android.support.v4.content.FileProvider"
        android:authorities="com.example.fr.fileprovider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/provider_paths"/>
    </provider>
    <activity
        android:name="com.example.fr.MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

最后,错误代码:

04-26 08:15:16.991 21748-21748/com.example.fr e/androidruntime:致命例外:主要 过程:com.example.fr,pid:21748 android.content.actitivityNotFoundException:找不到任何活动来处理意图{act = android.intent.action.view dat = content://com.example.fr.fileprovider/assets/assets/toto.pdf typ typ typ> at android.app.instrumentation.checkstartactivityResult(instrumentation.java:1809( at android.app.instrumentation.execstartactivity(instrumentation.java:1523( 在Android.App.Activity.startactivityForresult(activity.java:4225( 在android.support.v4.app.basefragmentactivityjb.startactivityforresult(baseFragmentActivityjb.java:48( 在android.support.v4.app.FragmentActivity.startactivityForresult(fragmentActivity.java:75( 在android.app.activity.startactivityforresult(activity.java:4183( 在android.support.v4.app.fragmentactivity.startactivityforresult(fragmentActivity.java:871( 在android.app.activity.startactivity(activity.java:4522( 在android.app.activity.startactivity(activity.java:4490( 在com.example.fr.mainactivity.readpdf(mainActivity.java:58( 在com.example.fr.mainactivity.Access $ 000(mainActivity.java:21( 在com.example.fr.fr.mainactivity $ 1.ONCLICK(mainActivity.java:34( at android.view.view.performClick(view.java:5637( at android.view.view $ persilClick.run(view.java:22429( 在Android.os.handler.handlecallback(Handler.java:751( 在Android.os.handler.dispatchMessage(Handler.java:95( at android.os.looper.loop(looper.java:154( at android.app.activitythread.main(activityThread.java:6119( 在java.lang.reflect.method.invoke(本机方法(上 在com.android.internal.os.os.zygoteinit $ methodAndargScaller.run(zygoteinit.java:886( 在com.android.internal.os.os.zygoteinit.main(zygoteinit.java:776(

感谢您的帮助

问题是您强迫系统打开意图,而无需检查是否可以处理意图的应用。您可能正在尝试在没有读取PDF文件的设备上打开PDF。尝试使用此代码:

PackageManager packageManager = getActivity().getPackageManager();
if (intent.resolveActivity(packageManager) != null) {
    startActivity(intent);
} else {
    Log.d(TAG, "No Intent available to handle action");
}

它在所有版本的Android

上都存在

不,不是。它在您测试的那些Android设备上起作用,这些设备恰好安装了支持content方案的PDF查看器。Android本身没有PDF查看器,并且不需要所有设备都有PDF查看器,并且所有(多用户设备(的用户都可以访问PDF查看器。

但它在Android 7.1.1上崩溃,我不知道为什么

您正在测试的设备没有支持content方案的PDF查看器。

相关内容

  • 没有找到相关文章

最新更新