android - 从当前应用程序加载另一个应用程序

标签 android android-intent intentfilter android-package-managers

您好,我正在开发一个 Android 应用程序,我在 ListView 中显示所有已安装的应用程序。单击列表项时,我尝试打开该特定应用。

这是我正在尝试的代码

    mListView.setOnItemClickListener(new OnItemClickListener() 
    {
        private Intent intent;

        public void onItemClick(AdapterView<?> parent, View arg1, int position, long arg3) 
        {

                String packName = (String) listOfapps.get(position).get("packagename");

                intent = getPackageManager().getLaunchIntentForPackage(packName);

                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
                startActivity(intent);
        }
    });

这对某些应用程序来说效果很好。但是在点击联系人和几个应用程序时,我越来越接近

android.content.ActivityNotFoundException:无法找到明确的 Activity 类 {com.android.contacts/com.android.internal.app.ResolverActivity};您是否已在 AndroidManifest.xml 中声明此 Activity ?

不确定我哪里出错了。 请帮忙。 谢谢

最佳答案

可能有些软件包没有提供您可以使用的启动器 Intent。为了防止您的应用程序崩溃,您应该能够通过执行以下操作来测试您的启动器 Intent 是否真正工作:

String packName = (String) listOfapps.get(position).get("packagename");
intent = getPackageManager().getLaunchIntentForPackage(packName);
// See how the package manager will resolve this Intent
ResolveInfo resolveInfo = getPackageManager().resolveActivity(intent,
            PackageManager.MATCH_DEFAULT_ONLY);
// Only start the activity if the package manager can resolve the Intent
if (resolveInfo != null) {
    startActivity(intent);
} else {
    // Tell the user he can't launch this app or whatever
}

您也不需要在 Intent 上设置 Intent.FLAG_ACTIVITY_NEW_TASKIntent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED,因为这些标志应该已经设置为您通过调用 getLaunchIntentForPackage()

关于android - 从当前应用程序加载另一个应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20328241/

相关文章:

android - 如何将传感器值发送到 Android 应用程序?

Android 深度链接在 ADB 中有效,但在浏览器中无效

android - 用于打开 xls 和 xlsx 文件的 Intent 过滤器

android - 仅在子 Activity 中使用 Monkey(android 调试)

android - 在 Android 应用程序开发中不再可见被系统杀死的应用程序

Android - 响应协助请求

android - Corona newScrollView hideScrollBar 仍然显示滚动条

android - Google 现在默认提供 64 位 SDK?

android - 如何检测 ScrollView 何时到达底部以便我可以将更多项目加载到其中?

java - 变量 'adapter' 是从内部类中访问的。需要宣布最终