gpt4 book ai didi

android - 使用深层链接从另一个启动应用程序

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:34:14 24 4
gpt4 key购买 nike

我正在开发两个应用程序 A 和 B,我希望将它们与深层链接相互链接。

应用 B 具有如下所示的深层链接:myApp://open/myAction?param=123

看起来像:

<!-- Update myAction deep link -->
<intent-filter android:label="@string/launcherName">

<action android:name="android.intent.action.VIEW" />

<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE />
<data
android:host="open/*"
android:scheme="myApp" />
</intent-filter>

如果我使用 adb 启动应用程序,它会完美运行。

现在,当用户单击 Activity A 中的按钮时,我正在尝试启动应用程序 B。

我在单击按钮 (OnClickListener) 时尝试了这个(发现于:GoogleDeveloper)

// Build the intent
Uri myAction = Uri.parse(mEditText.getText().ToString()); // is something like: `myApp://open/myAction?param=1AD231XAs`
Intent mapIntent = new Intent(Intent.ACTION_VIEW, myAction);

// Verify it resolves
PackageManager packageManager = getPackageManager();
List<ResolveInfo> activities = packageManager.queryIntentActivities(mapIntent, 0);
boolean isIntentSafe = activities.size() > 0;

// Start an activity if it's safe
if (isIntentSafe) {
startActivity(mapIntent);
}

但我无法使用此应用打开其他应用。

最佳答案

以上答案只能打开屏幕定义为 LAUNCHER 的应用程序,不能打开深层链接。

这将用于将应用 XYZ 与任何应用链接:

 private void startAppXYZfromThisFuckinApp() {
// pass the uri (scheme & screen path) of a screen defined from app XXX that you want to open (e.g HomeActivity)
Uri uri = Uri.parse("xyz://screen/home");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, uri);

//Verify if app XYZ has this screen path
PackageManager packageManager = getPackageManager();
List<ResolveInfo> activities =
packageManager.queryIntentActivities(mapIntent, 0);
boolean isIntentSafe = activities.size() > 0;

//Start HomeActivity of app XYZ because it's existed
if (isIntentSafe) {
startActivity(mapIntent);
}
}

显然,在应用程序 XYZ 中,AndroidManifest.xml 必须是这样的:

<activity
android:name=".HomeActivity"
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data>
android:host="screen/home"
android:scheme="xyz" />
</intent-filter>

它现在将从应用 XYZ 打开屏幕 HomeActivity!

关于android - 使用深层链接从另一个启动应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46930334/

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