Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
打开应用程序的Android url架构_Android - Fatal编程技术网

打开应用程序的Android url架构

打开应用程序的Android url架构,android,Android,我想在用户输入url时打开应用程序。我在申请时看到了这个。例如,如果有人在浏览器中输入此url,将打开一个对话框,要求用户打开应用程序或浏览器 这是我的代码,但不起作用: 舱单: <activity android:name="ir.mywebsite.goblin.FistActiivty" android:label="@string/app_name" > <intent-filter> <

我想在用户输入url时打开应用程序。我在申请时看到了这个。例如,如果有人在浏览器中输入此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>
120是我想在应用程序中获取的id,它显示了数据,但首先我需要在打开url时打开应用程序

我怎样才能做到


谢谢

我的建议是使用像这样的url方案mywebsite://p/120

为了处理此方案,您应该在清单中描述的主要活动中添加一个意图过滤器,如:

 <!-- 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>

然后,您可以在活动中获取url,就像任何意图参数一样。下面是一个示例,您可以将其添加到活动的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
                            }
                        }
}
if(getIntent().getExtras()!=null){
Uri data=getIntent().getData();
如果(数据!=null){
字符串scheme=data.getScheme();//“我的网站://”
如果(!TextUtils.isEmpty(scheme)&&scheme.equals(“我的网站”)){
字符串类型=data.getHost();//p
List params=data.getPathSegments();
如果(!params.isEmpty()){
字符串id=params.get(0);/“120”
//用它做你的事情
}
}
}
希望它能派上用场


干杯

你看到这个问题了吗?@GennadiiSaprykin感谢你的回答,但它没有使用url,而是使用了类似这样的东西”myapp://.....“是的,这个答案不适合你。你想要的是一个广播接收器,或者如果你拥有一个特定的网站,并且可能有很多内容可以索引,那么“深度链接和索引”,这是谷歌在安卓系统上推出的一款新产品,对你来说甚至更好。这一款更接近你正在做的事情,但看起来你已经准备好了一切。不确定为什么它不起作用,但我现在没有时间测试它。
 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
                            }
                        }
}