[英]Start Activity from one package to another package
我在不同的套餐中有不同的活动,
假设我有两个包-> com.pack1-> com.pack2
我在pack1中有一个Activity,并且想在pack2中调用另一个Activity。 我将如何使用意图显示
21:19:10.405: W/System.err(7578): android.content.ActivityNotFoundException: Unable to find explicit activity class have you declared this activity in your AndroidManifest.xml?
Intent i = new Intent("android.intent.action.MAIN");
i.setComponent(new ComponentName("com.mypkg.mystff","com.mypkg.mystuff.MyClass"));
其他答案也是正确的。 但是,这将在设备中的任何位置起作用。
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
将此添加到您的xml部分
请阅读错误。
“您是否已在AndroidManifest.xml中声明了此活动”。 包装没有问题对于一个活动去另一个活动。 检查您的AndroidManifest.xml是否在AndroidManifest中清除了活动。
我认为问题是由于这个原因发生的。
谢谢。
您需要确保在AndroidManifest.xml中声明了活动,否则您将无法使用它。
例:
<activity
android:name="com.yourpackage.YourActivity"
android:launchMode="singleTop"
android:configChanges="orientation"
>
</activity>
好的,因此有两个部分可以共同定义“ Activity
位置。 首先,是package
属性-在它下面是“ com.flipagain2”
另外还有android:name
属性,例如.FlipAgain2Activity.
因此,这意味着当Android查找您的活动时,它正在查看
com.flipagain2.FlipAgain2Activity.
说得通? 只需结合这两件事。
因此,您需要将活动分为两个包。
更改第二个(不起作用的),如下所示:
<activity android:name="com.package2.CaptureActivity" >
<intent-filter>
<action android:name="com.google.zxing.client.android.CaptureActivity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
你看到我改变了吗? 保持第一个Activity
声明不变,但是更改第二个android:name=
以匹配包含包的完全限定名称。 使用这种方法,每个活动都可以放在不同的程序包中。
通常,活动是针对其套餐的。 您不能在另一个包中启动活动,除非该活动被明确“导出”(即:被其他应用程序所知)。 将此添加到com.pack2中FlipAgain2Activity的清单中:
android:exported="true"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.