gpt4 book ai didi

android - 针对特定包的自定义 Intent

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:05:30 26 4
gpt4 key购买 nike

假设我的应用程序是“A”,我使用应用程序“A”中的自定义 Intent 启动应用程序“B”的 Activity。它工作正常,正如我所希望的那样。我使用的代码在应用“B”的 list 中:

<activity
android:name=".mysecondAct"
android:label="@string/title_activity_second" >
<intent-filter>
<action android:name="com.example.intent.action.Dream" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>

在应用程序“A”的 Activity 中,我启动应用程序“B”,

Intent i =new Intent("com.example.intent.action.Dream");
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);

现在,我如何指定一个特定的包, Intent 应该被发送到,以便只有那个应用程序接收 Intent 并启动 Activity ?原因是,我有一个包列表,用户可以选择调用哪个包。

最佳答案

像下面这样使用 ComponentName 类:

Intent intent = new Intent();

intent.setComponent(new ComponentName("com.example1", "com.example1.MyExampleActivity1"));

startActivity(intent);

请注意,第一个参数不是类的包名;它是应用程序的包名称——该应用程序的 AndroidManifest.xml 中 list 元素的包属性。

如果您知道要开始的 Activity 的名称(不是类(class)),那么您可以这样做:

Class<?> claz = null;

if(StringClassname != null) {

try {

claz = Class.forName(StringClassname );

} catch (ClassNotFoundException e) {

e.printStackTrace();
}

}

Intent intent = new Intent(this, claz);

startActivity(intent);

而且,如果你甚至不知道 Activity 名称和相应的类,那么我猜它会成为使用广播的候选者,即从你的 AppA,你应该在广播......并且在 AppB,AppC 中有广播接收器等与相应的过滤器..

编辑:鉴于您只知道包名称和 Intent 操作名称,请尝试像这样创建您的 Intent :

Intent i = new Intent();

i.setAction("com.example.intent.action.Dream");

i.setPackage(packageName);

startActivity(i);

关于android - 针对特定包的自定义 Intent ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27884457/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com