我想在用户输入网址时打开该应用程序。我看到了这个应用程序。例如,如果有人在浏览器中输入此URL,则会打开一个对话框,要求用户打开应用程序或浏览器。
这是我的代码,但它不起作用:
清单:
<activity
android:name="ir.mywebsite.goblin.FistActiivty"
android:label="@string/app_name" >
<intent-filter>
<data android:scheme="http" android:host="mywebsite.ir"/>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
</activity>
这是我在浏览器中输入的网址,但没有任何反应。
http://mywebsite.ir/p-120
120是我想在我的应用程序中获取的ID并显示数据,但首先我需要在打开url时打开我的应用程序。
我该怎么办?
谢谢
答案 0 :(得分:0)
我的建议是使用像mywebsite:// p / 120
这样的网址方案为了处理这个方案,你应该在Manifest中描述的主要活动中添加一个intent过滤器,例如:
<!-- Activities in your Manifest -->
<activity android:name=".activities.YourMainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<!-- url scheme -->
<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:scheme="mywebsite" />
</intent-filter>
</activity>
然后您可以像活动参数一样获取活动中的网址。下面是一个示例,您可以在活动的onStart()方法中添加:
if (getIntent().getExtras() != null) {
Uri data = getIntent().getData();
if (data != null) {
String scheme = data.getScheme(); // "mywebsite://"
if (!TextUtils.isEmpty(scheme) && scheme.equals("mywebsite")) {
String type = data.getHost(); // p
List<String> params = data.getPathSegments();
if (!params.isEmpty()) {
String id = params.get(0); // "120"
// DO YOUR STUFF WITH IT
}
}
}
希望它能派上用场!
干杯