Andorid,如何使用自定义URL方案打开另一个应用程序?

时间:2017-10-05 07:06:38

标签: android

从我的原生应用程序中,我需要打开另一个由Ionic构建的应用程序。

我试过这样,

val intent = packageManager.getLaunchIntentForPackage("com.example.app")
intent.putExtra("uri", "hello 2?")
intent.data = Uri.parse("hello?")
startActivity(intent)

它可以启动应用程序,但它从不调用handleOpenURL()方法。

所以我想尝试使用自定义URL方案而不是包名。

如何使用带URI参数的自定义URL方案打开另一个应用程序?

2 个答案:

答案 0 :(得分:4)

 Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setData(Uri.parse("YOUR_URL"));
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    } else {
        Toast.makeText(this, R.string.no_activity_found, Toast.LENGTH_LONG).show();
    }

答案 1 :(得分:3)

这对我有用。在您的Android清单的启动器活动中,请提及以下行

<intent-filter>
      <data android:scheme="http" />
      <!-- or you can use deep linking like  -->

      <data android:scheme="http" android:host="abc.xyz"/>
      <action android:name="android.intent.action.VIEW"/>
      <category android:name="android.intent.category.BROWSABLE"/>
      <category android:name="android.intent.category.DEFAULT"/>

</intent-filter>

而不是根据您的偏好更改主机名,您也可以使用自己的方案。