我在SO中尝试了所有的例子,但它们对我不起作用。我希望从我的应用程序内部的另一个应用程序(而不是主要)中启动一个特定的类。
我可以使用此代码启动应用程序主页(这可以工作但不是我想要的类):
Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage("com.paloaltophoto.starttimer");
startActivity(LaunchIntent);
但是,当我按照其他SO答案中的示例尝试进入我想要的课程时,我收到错误
public void onTest(View v){
Intent intent = new Intent();
intent.setComponent(new ComponentName("com.paloaltophoto.starttimer", "com.paloaltophoto.starttimer.edit"));
startActivity(intent);
}
我收到有关com.paloaltophoto.starttimer / com.paloaltophoto.starttimer.edit的消息未在我的清单中声明,但清单中包含以下代码:
<activity android:name="com.paloaltophoto.starttimer.edit">
</activity>
一切都很顺利。显然,另一个应用程序允许我启动它,因为我可以在主页面上启动它,但我找不到任何关于我应该如何为特定类工作的参考。
答案 0 :(得分:0)
该类定义为:
ComponentName(package, activity_name)
因此,根据您的意见,您需要:
intent.setComponent(new ComponentName("com.paloaltophoto.startline", "com.paloaltophoto.starttimer.edit"));
因为您的包名称与您的组件路径不同。
答案 1 :(得分:0)
要从另一个应用程序运行另一个活动,您应该致电:
try {
Intent intent = new Intent();
intent.setComponent(new ComponentName(requiredPackage, requiredClazz));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
} catch (ActivityNotFoundException ex) {
ex.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
}
上面的代码可以抛出: