我想使用自己的应用启动应用,但不是通过提供包名称,我想打开自定义网址。
我这样做是为了启动一个应用程序。
Intent intent = getPackageManager().getLaunchIntentForPackage(packageInfo.packageName);
startActivity(intent);
代替包名称可以提供深层链接,例如:
"mobiledeeplinkingprojectdemo://product/123"
答案 0 :(得分:13)
您需要定义一个订阅所需意图过滤器的活动:
<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中,您可以访问主机,方案等:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent deepLinkingIntent= getIntent();
deepLinkingIntent.getScheme();
deepLinkingIntent.getData().getPath();
}
执行路径检查并再次触发意图以使用户进行相应的活动。 请参考data获取更多帮助
现在激发意图:
Intent intent = new Intent (Intent.ACTION_VIEW);
intent.setData (Uri.parse(DEEP_LINK_URL));
答案 1 :(得分:0)
不要忘记处理异常。如果没有可以处理深层链接的活动,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()
}