使用intent打开另一个App时的ActivityNotFoundException

时间:2018-05-31 18:31:07

标签: android android-intent android-activity

我正在尝试从我的Activity中打开另一个应用程序,这是我的意图:

 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始终为false,但我安装了包名为“com.bifit.cashdesk.mobile”的Application。这个应用程序已经打开了。

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);也没有帮助。 什么可能导致此错误?这个意图的代码取自该service \ app的官方文档。我已经向他们的支持发送了电子邮件,但我的代码可能有问题?

2 个答案:

答案 0 :(得分:1)

要打开其他应用,您可以使用此功能:

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

答案 1 :(得分:0)

如果只有包名,则可以使用PackageManager.getLaunchIntentForPackage()来构建意图。例如:

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

如果它不起作用,则可以使用apkanalyzer SDK工具提取清单,然后查看其中包含的意图过滤器,以了解如何构建意图来启动它:

apkanalyzer manifest print <some_application.apk>