从另一个应用程序启动应用程序的子类

时间:2013-12-28 06:16:46

标签: android android-intent

我在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> 

一切都很顺利。显然,另一个应用程序允许我启动它,因为我可以在主页面上启动它,但我找不到任何关于我应该如何为特定类工作的参考。

2 个答案:

答案 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();
}

上面的代码可以抛出: