ActivityNotFoundException при использовании намерения открыть другое приложение - PullRequest
0 голосов
/ 31 мая 2018

Я пытаюсь открыть другое приложение из своей Активности, вот мое намерение:

 Intent intent = new Intent();
            intent.setComponent(
                    new ComponentName(
                            "com.bifit.cashdesk.mobile",
                            "com.bifit.cashdesk.mobile.views.StartActivity"
                    )
            );
            intent.putExtra("pin", "");
            String token = preferences.getString("kassatoken","");
            intent.putExtra("token",token);
            intent.putExtra("receipt_bundle",json);
            startActivity(intent);

Но когда я запускаю этот код, я получаю следующую ошибку:

android.content.ActivityNotFoundException: Unable to find explicit activity class {com.bifit.cashdesk.mobile/com.bifit.cashdesk.mobile.views.StartActivity}; have you declared this activity in your AndroidManifest.xml?

Я также пытался проверить, может ли какое-либо системное приложение обработать это намерение:

 PackageManager packageManager = getPackageManager();
            List activities = packageManager.queryIntentActivities(intent,
                    PackageManager.MATCH_DEFAULT_ONLY);
            boolean isIntentSafe = activities.size() > 0;

isIntentSafe всегда ложно, но я установил приложение с именем пакета "com.bifit.cashdesk.mobile".И это приложение было открыто.

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); также не помогло.Что может вызвать эту ошибку?Этот код с намерением был взят из официальной документации этого сервиса \ приложения.Я уже отправил электронное письмо в их службу поддержки, но может быть что-то не так с моим кодом

Ответы [ 2 ]

0 голосов
/ 16 июля 2018

Если у вас есть только имя пакета, вы можете использовать PackageManager.getLaunchIntentForPackage() для создания намерения.Например:

    Intent intent = getPackageManager().getLaunchIntentForPackage("com.bifit.cashdesk.mobile");
    if (intent != null) {
        startActivity(intent);
    }

Если это не сработает, вы можете использовать инструмент apkanalyzer SDK для извлечения манифеста, а затем посмотреть на его фильтры намеренийсодержит информацию о том, как создать намерение запустить его:

apkanalyzer manifest print <some_application.apk>
0 голосов
/ 31 мая 2018

Чтобы открыть другое приложение, вы можете использовать это:

intent = new Intent("com.example.hasib.videoplayer.MediaPlayerActivity");
startActivity(intent);
...