其他分享
首页 > 其他分享> > Android 通过自定义 scheme 协议来实现 Web 页面启动原生 APP

Android 通过自定义 scheme 协议来实现 Web 页面启动原生 APP

作者:互联网

目录

应用场景分析

当我们在浏览器中打开某些网页,有时候会发现它有一个功能是可以实现吊起手机中已安装的某个 APP,像我们在浏览器打开 csdn 的一篇博客,或者在浏览器打开知乎的一篇文章时,都会有一个类似去APP阅读的按钮。

这篇文章就来实现这个功能。

实现、效果演示

	<activity android:name=".MainActivity">
        <intent-filter>
             <action android:name="android.intent.action.MAIN" />
             <action android:name="android.intent.action.VIEW" />

             <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>

         <!--避免桌面没有图标,所以多添加一个 intent-filter-->
         <intent-filter>
             <data
                 android:host="myapp.host"
                 android:pathPrefix="/openwith"
                 android:scheme="myappscheme" />
             <action android:name="android.intent.action.VIEW" />

             <category android:name="android.intent.category.DEFAULT" />
             <category android:name="android.intent.category.BROWSABLE" />
         </intent-filter>
     </activity>

     <activity android:name=".SchemeActivity" />
myappscheme://myapp.host/openwith

实现吊起并打开特定页面
在前面 4 步的基础上我们要是实现这个功能,需要在 MainActivity 中加入如下代码:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Intent intent = getIntent();
        if (null != intent) {
            Uri uri = intent.getData();
            if (null != uri) {
                Log.e("uri-->", "" + uri.getScheme()
                        + "-path->" + uri.getPath()
                        + "-params1->" + uri.getQueryParameter("params1"));
                if ("schemeAct".equals(uri.getQueryParameter("params1"))) {
                    Intent intent1 = new Intent(MainActivity.this, SchemeActivity.class);
                    startActivity(intent1);
                }
            }
        }
    }

}

修改我们的访问地址,加上参数,如下:

myappscheme://myapp.host/openwith?params1=schemeAct

效果展示:

带参数启动特定页面
这样我们的功能就已经基本 Ok 了。

优缺点说明

总结

  1. 前面的清单文件注册,需要放到默认启动的 Activity 下,这一点很多博客没有提及到。
  2. 点击后如果手机没有安装对应的 APP,那么这个判断和后面的逻辑是在网页端处理的。

标签:params1,Web,浏览器,自定义,APP,uri,MainActivity,打开
来源: https://blog.csdn.net/wufeng55/article/details/88089638