我正在尝试拦截 URL,以便在用户访问该 URL 时打开我的应用程序。我在相关问题 https://stackoverflow.com/a/2958870 中关注此答案
我在 AndroidManifest.xml 中添加了以下内容
<activity
android:name="com.myapp.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<data android:scheme="http" android:host="myapp.com"/>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
并且在MainActivity.java
的onCreate
中有以下内容
Uri data = getIntent().getData();
//String scheme = data.getScheme();
//String host = data.getHost();
if (data == null)
Log.d("Data is null", "");
else
Log.d("Data is not null", "");
当我在模拟器中启动应用程序时,我注意到出现了“数据为空”调试消息。我必须注释掉 scheme
和 host
因为这导致我的应用程序在加载时失败,我猜原因是因为 data
为空。
我错过了什么或者做错了什么吗?
编辑:我尝试像这样分割 Intent 过滤器:
<activity
android:name="com.myapp.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<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="myapp.com" android:scheme="http" />
</intent-filter>
</activity>
此外,当我只有一个 Intent 过滤器(如下)时,当我在 android studio 中按 run
时,我的应用程序甚至不会在模拟器上启动。
<activity
android:name="com.myapp.MainActivity"
android:label="@string/app_name" >
<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="myapp.com" android:scheme="http" />
</intent-filter>
</activity>
最佳答案
试试这个 Intent 过滤器:
<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="myapp.com" android:scheme="http" />
</intent-filter>
这是一个隐含的 Intent ,但我尝试过,它对我有用。我认为您需要 android.intent.category.BROWSABLE
类别。
关于java - 拦截 url 以启动应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20504382/