Исключительная ситуация при установке apk в android 10 по назначению (android .content.ActivityNotFoundException) - PullRequest
0 голосов
/ 20 февраля 2020

Я тестирую мое android приложение для поддержки android версии 10.

Когда я тестирую приложение на устройстве android 10, возникает проблема с процессом установки apk.

Вот мой исходный код и тестовая информация : -

        File realFilePath = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/app-debug.apk");
        if(realFilePath.exists()) {

            Uri apkUri = Uri.fromFile(realFilePath);
            Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.setDataAndType(apkUri, "application/vnd.android.package-archive");
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            try {
                startActivity(intent);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

сообщение об ошибке

2020-02-20 14:02:13.987 9572-9572/com.example.myapplication W/System.err: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=file:///storage/emulated/0/app-debug.apk typ=application/vnd.android.package-archive flg=0x10000000 }
2020-02-20 14:02:13.987 9572-9572/com.example.myapplication W/System.err:     at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:2058)
2020-02-20 14:02:13.987 9572-9572/com.example.myapplication W/System.err:     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1716)
2020-02-20 14:02:13.987 9572-9572/com.example.myapplication W/System.err:     at android.app.Activity.startActivityForResult(Activity.java:5192)
2020-02-20 14:02:13.987 9572-9572/com.example.myapplication W/System.err:     at android.app.Activity.startActivityForResult(Activity.java:5150)
2020-02-20 14:02:13.987 9572-9572/com.example.myapplication W/System.err:     at android.app.Activity.startActivity(Activity.java:5521)
2020-02-20 14:02:13.987 9572-9572/com.example.myapplication W/System.err:     at android.app.Activity.startActivity(Activity.java:5489)

ТЕСТОВАЯ информация

================================
android {
    compileSdkVersion 28
    buildToolsVersion "28.0.3"
    defaultConfig {
        applicationId "com.example.myapplication"
        minSdkVersion 15
        targetSdkVersion 22
================================

Android 9: исключений нет. Android 10: существует ActivityNotFoundException и не удается установить apk.

Я уже знаю, что мне нужно использовать поставщика файлов для доступа к внешнему файлу. Но, как вы можете видеть, я установил для targetSdkVersion версию 22.

targetSdkVersion 22 * ​​1027 *

Почему ошибка возникает только на устройстве Android 10?

1 Ответ

0 голосов
/ 20 февраля 2020

Попробуйте:

if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
}

Если на устройстве нет приложений, которые могут получить неявное намерение, ваше приложение обработает sh при вызове startActivity () . Чтобы сначала убедиться, что приложение существует для получения намерения, вызовите resolveActivity() для вашего объекта Intent. Если результат не нулевой, есть хотя бы одно приложение, которое может обработать намерение, и безопасно вызывать startActivity (). Если результат нулевой, вы не должны использовать намерение.

...