从另一个应用程序启动Activity Android

7

可能是重复问题:
Android从另一个应用程序启动应用程序

我遇到了一个问题,如下所示:

我有两个应用程序,我想通过另一个应用程序启动其中一个应用程序的活动...... 我将举一个例子:

第一个应用程序包:

"es.wul4.android.app1"

第二个应用程序包:

"es.wul4.android.app2"

我希望启动名为"Identificar"的类的活动,并从app1中进行。这个活动不是主要的活动。我尝试过这样做:
Intent intent = getPackageManager().getLaunchIntentForPackage("es.wul4.app2.Identificar");
startActivity(intent);

但是我这样做得不到任何东西,它告诉我应用程序不存在。
如果我尝试这样做:
getPackageManager().getLaunchIntentForPackage("es.wul4.app2");
startActivity(intent);

它启动了一个活动,但是主要的那个……

我该如何在包“es.wul4.app2.Identificar”内启动这个特定的Activity?

非常感谢。


你想要启动特定的活动吗? - Praveenkumar
3个回答

18

你需要使用的是intent-filters。假设要启动的活动在包launch.me中。在这个应用程序的清单文件中,所有的活动(主活动或其他活动)都将由<activity>标记声明。
假设你想要启动的活动在类文件Launchme中。那么你的清单文件的一部分将是:

<activity android:name="launch.me.Launchme"
              android:label="@string/app_name">
<intent-filter>
            <action android:name="launch.me.action.LAUNCH_IT"/>
            <category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>  

现在,在你希望启动上述活动的活动中使用以下内容:(注意:此活动可以位于任何包中的任何地方。您必须确保调用和被调用的包都可在设备上使用)

Intent i=new Intent();
i.setAction("launch.me.action.LAUNCH_IT");
startActivityForResult(i,0);

你可以使用startActivityForResult以外的其他方法启动Intent,这取决于你。


谢谢!我不知道使用<intent-filter>来启动活动是必要的,现在我可以无问题地启动活动,甚至可以发送特定的数据。 - zapotec
是的,您可以使用意图(intents)和 putExtra 轻松地在它们之间传递值 :) - Urban

1

你在app1的清单文件中添加了活动吗?

    <activity
        android:label="@string/app_name"
        android:name=".Identificar" >
    </activity>

1
+1 重要的事情被提到 - Praveenkumar
2
我认为你没有很好地理解...... app1 不包含 Activity Identificar。Activity Identificar 在 app2 中。我的目的是从 app1 启动此活动。无论如何,谢谢。 - zapotec

-4

我认为,既然这两个活动在同一个包中,你只需要做:

startActivity(new Intent(getApplicationContext(), Identificar.class));

第一个应用程序包:es.wul4.android.app1,第二个应用程序包:es.wul4.android.app2 - Selvin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接