从两个不同的包开始活动

时间:2013-01-16 23:39:53

标签: android android-intent android-activity

我有一个包含两个包 first.pack second.pack 的项目,有两个不同的Activity。我正在尝试使用该代码从第一个Activity开始第二个Activity

Intent intent = new Intent(Intent.ACTION_MAIN); 
      intent.setComponent(new ComponentName("second.pack", "second.pack.SecondActivity")); 
      startActivity(intent);

奇怪的是,这段代码已经工作了一段时间,但在我取消并重新安装应用程序之后,它开始向我返回以下错误:

Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {second.pack/second.pack.SecondActivity}; have you declared this activity in your AndroidManifest.xml?

我哪里错了?

3 个答案:

答案 0 :(得分:1)

在AndroidManifest.xml文件中确保活动已经定义如下:

<activity
      android:name="second.pack.SecondActivity"
      android:label="@string/yor_title"/>

答案 1 :(得分:0)

您有一个包含2个包的项目,但项目中有多少个应用程序?我们假设只有一个应用程序。 ComponentName的第一个参数是应用程序的包名称,不考虑要调用的活动的包名称。

因此,如果您只有一个应用程序的程序包为“first.pack”,您想从中调用程序包“second.pack”的活动,那么正确的调用是:

Intent intent = new Intent(Intent.ACTION_MAIN); 
  intent.setComponent(new ComponentName("first.pack", "second.pack.SecondActivity")); 
  startActivity(intent);

它停止工作的一个可能原因可能是您更改了应用程序的包(例如从“second.pack”更改为“first.pack”)。

答案 2 :(得分:0)

如果应用程序中有不同的包,请先执行以下操作:

<activity android:name=".Kunal.Android" />

在manifest.xml中声明该活动。

Intent intent = new Intent(MainActivity.this,Second package name.class );

以下是我的代码:

switch (position) {
    case 0:
        Intent newActivity = new Intent(MainActivity.this,com.example.owner.listview_1.Kunal.Android.class);
        startActivity(newActivity);
        break;
    case 1:
        Intent newActivity1 = new Intent(MainActivity.this, com.example.owner.listview_1.Kunal.Iphone.class);
        startActivity(newActivity1);
        break;
    case 2:
        Intent newActivity2 = new Intent(MainActivity.this,com.example.owner.listview_1.Kunal.Window.class);
        startActivity(newActivity2);
        break;
}