我需要从我创建的应用程序启动应用程序的活动(而不是主要活动)。我想要启动的活动是专有的,因此,我不能对其代码(或清单)进行任何更改。
例如:我想从我自己的应用程序中启动某人的Facebook个人资料。从我的应用程序到Facebook的正常意图将打开“新闻源”(我不想要)。我想知道如何访问任何其他活动。 提前谢谢!
我的小代码:
String PACKAGE="com.facebook.katana";
Intent launchIntent = getPackageManager()
.getLaunchIntentForPackage(PACKAGE);
startActivity(launchIntent);
答案 0 :(得分:1)
要启动特定活动,您需要使用显式意图。如果您知道该活动应答的行为,请使用隐式意图和行动。
要使用显式意图,您可以执行以下操作(前提是您从活动中调用它):
Intent intent = new Intent();
intent.setComponent(new ComponentName("com.package.name", "com.package.name.ActivityName"));
if(getPackageManager().resolveActivity(intent, 0) != null) {
startActivity(intent);
} else {
Toast.makeText(this, "No app installed that can perform this action", Toast.LENGTH_SHORT).show();
}
您还可以为意图添加标记,添加操作和类别。只要可以通过PackageManager将意图解析为可行的意图,它就会启动活动。
现在...
关于Facebook个人资料的问题是另一个问题。
也许,实现这一目标的最佳方法是使用Action VIEW并将Intent.setData与uri一起提供给配置文件页面。还应检查是否可以正确解决。然后将启动所有支持的活动的选择器来打开它,其中应该包括facebook应用程序。然后由用户使用Facebook应用程序或启动器打开意图。