Android Can';t使用程序包名称启动与我的应用程序不同的应用程序
我正在尝试从我的应用程序打开Chrome应用程序。代码很简单 我使用以下代码获得了Chrome应用程序的软件包名称:Android Can';t使用程序包名称启动与我的应用程序不同的应用程序,android,google-chrome,Android,Google Chrome,我正在尝试从我的应用程序打开Chrome应用程序。代码很简单 我使用以下代码获得了Chrome应用程序的软件包名称: PackageManager manager = Values.activity.getPackageManager(); Intent i = new Intent(Intent.ACTION_MAIN, null); i.addCategory(Intent.CATEGORY_LAUNCHER); List<Re
PackageManager manager = Values.activity.getPackageManager();
Intent i = new Intent(Intent.ACTION_MAIN, null);
i.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> availableActivities = manager.queryIntentActivities(i, 0);
for(ResolveInfo ri:availableActivities){
apps.add(ri.activityInfo.packageName);
}
//the package name of Chrome from packagemanager is "com.android.chrome"
但任何事情都会发生错误,我的日志上说:
12-28 20:28:52.298: I/ActivityManager(482): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 pkg=com.android.chrome cmp=com.android.chrome/com.google.android.apps.chrome.Main} from pid 20474
我错过了什么?从packagemanager检索到的包名是否错误?以下是从应用程序启动浏览器的通用代码:
String uriString = "http://stackoverflow.com/";
Intent intent = new Intent();
intent.setData(Uri.parse(uriString));
intent.setAction(Intent.ACTION_VIEW);
if (intent.resolveActivity(getPackageManager())!= null) {
startActivity(intent);
} else {
// Any browser is not available
}
我可以知道你为什么只想推出Chrome吗?谢谢你的回答。但打开Chrome应用程序只是一个例子。我想创建许多按钮来打开其他应用程序。那么你的问题就错了。你应该清楚地提到你正在做什么和你想要实现什么,因为你没有为我的目标做足够的准备。我试图在我的launcher应用程序中打开另一个应用程序。但在我的启动器应用程序的主要活动中,清单中有默认和主筛选器,无法打开其他应用程序。我不知道为什么。我只是做了一个变通。Android系统在启动其他应用程序时应用了一些安全限制。第一个问题是,第二个应用程序是否定义了一些操作来启动这些组件。其次,可以使用android:protectionLevel=“signature”定义权限。您可以使用getActivityInfo(ComponentName组件,int标志)检索我们所知道的关于特定活动类的所有信息。
String uriString = "http://stackoverflow.com/";
Intent intent = new Intent();
intent.setData(Uri.parse(uriString));
intent.setAction(Intent.ACTION_VIEW);
if (intent.resolveActivity(getPackageManager())!= null) {
startActivity(intent);
} else {
// Any browser is not available
}