繁体   English   中英

从一个包开始活动到另一个包

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM