我在两个包中有两个不同的活动如下:
在我的清单文件中,我有
package="com.my.application"
并且这些活动都在相同的application
标签中。
我正在使用:
从.Test.MyActivity2中启动MyActivity1Intent intent = new Intent(getApplicationContext(), MyActivity1.class);
startActivity(intent);
我在启动应用程序时在log cat中获取以下日志:
I/ActivityManager( 1305): Starting: Intent { cmp=com.my.application/.MyActivity1 } from pid 2336
D/dalvikvm( 1886): GC_EXTERNAL_ALLOC freed 133K, 51% free 2687K/5447K, external 1527K/1559K, paused 56ms
D/dalvikvm( 1886): GC_EXTERNAL_ALLOC freed 12K, 51% free 2675K/5447K, external 9796K/11844K, paused 40ms
D/AndroidRuntime( 1886): Shutting down VM
W/dalvikvm( 1886): threadid=1: thread exiting with uncaught exception (group=0x2018d560)
I/ActivityManager( 1305): Process com.my.application (pid 2336) has died.
在调用startActivity
函数后,我的应用程序段/崩溃,我无法看到MyActivity2已启动/启动。
因此无法从android中的不同包中启动活动。
谢谢,
PP。
答案 0 :(得分:1)
它可能:)你的发布是正确的,所以它必须设置有问题。确切地说,你应该从activity1开始activity2,为什么你很清楚清单就是我说的答案。您会看到清单中引用的包是您的主要活动应该驻留的位置。
答案 1 :(得分:1)
检查您的清单
应该如下所示
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.my.application" android:versionCode="1"
android:versionName="1.0">
<application android:label="@string/app_name"
android:icon="@drawable/logo_android">
<activity android:name=".MyActivity1" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".Test.MyActivity2" android:label="@string/app_name">
</activity>
</application>
</manifest>
我这会帮助你。
答案 2 :(得分:1)
Intent intent = new Intent(this,com.packagename.activityname);
也在清单中,
<activity android:name=".packagename.Activityname" />
而不是<activity android:name=".Activityname" />
答案 3 :(得分:0)
使用一个包到另一个包很简单。使用此代码执行此操作
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setComponent(new ComponentName("another package name","another package's main activity"));
startActivity(intent);
}
这对我来说很好。
答案 4 :(得分:-1)
您可以尝试这样: 把它放在清单中:
<activity android:name=".SecondActivity">
<intent-filter>
<action android:name="applicationB.intent.action.Launch" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
然后这样打电话:
Intent intent = new Intent("applicationB.intent.action.Launch");
startActivity(intent);