我想通过使用自己的应用程序启动应用程序,但不是通过提供软件包名称,而是想要打开自定义URL。
我这样做是为了启动一个应用程序。
Intent intent = getPackageManager().getLaunchIntentForPackage(packageInfo.packageName);
startActivity(intent);
是否可以提供深链接而不是软件包名称,例如:
"mobiledeeplinkingprojectdemo://product/123"
我想通过使用自己的应用程序启动应用程序,但不是通过提供软件包名称,而是想要打开自定义URL。
我这样做是为了启动一个应用程序。
Intent intent = getPackageManager().getLaunchIntentForPackage(packageInfo.packageName);
startActivity(intent);
是否可以提供深链接而不是软件包名称,例如:
"mobiledeeplinkingprojectdemo://product/123"
你需要定义一个活动,该活动将订阅所需的意图过滤器:
<activity
android:name="DeepLinkListener"
android:exported="true" >
<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="host"
android:pathPattern="some regex"
android:scheme="scheme" />
</intent-filter>
</activity>
然后在您的 DeepLinkListener
活动的 onCreate
中,您可以访问主机、方案等:
那么您可以通过以下方法在 DeepLinkListener
活动的 onCreate
中访问主机、方案等:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent deepLinkingIntent= getIntent();
deepLinkingIntent.getScheme();
deepLinkingIntent.getData().getPath();
}
检查路径,再次触发 Intent
去相应的活动页面。需要更多帮助请参考数据 文档。
现在触发一个 Intent
:
Intent intent = new Intent (Intent.ACTION_VIEW);
intent.setData(Uri.parse(DEEP_LINK_URL));
别忘了处理异常。如果没有能够处理深度链接的活动,startActivity将返回一个异常。
try {
context.startActivity(
Intent(Intent.ACTION_VIEW).apply {
data = Uri.parse(deepLink)
}
)
} catch (exception: Exception) {
Toast.makeText(context, exception.localizedMessage, Toast.LENGTH_LONG).show()
}