通过打开html启动app并传递参数

经常可以看到有些app可以通过网页打开,这是通过自定义scheme来实现的
实现方式:在Activity中设置解析自定义协议

        <activity android:name=".LauncherActivity">
            <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="likui.me"
                    android:scheme="app" />
            </intent-filter>
        </activity>

然后创建测试的html代码

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>test</title>
    </head>
    <body>
    <a href="app://likui.me?param=test">自定义scheme测试</a>
    </body>
</html>

从上面的代码可以看到协议头是自定义的“app”,在测试过程中发现,href中的链接在浏览器输入框里面无法直接打开,只能在html代码中打开。测试代码我已经放到服务器上了,如果需要可以点击打开
测试结果:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_launcher);
        Uri uri = getIntent().getData();
        if (uri != null) {
            StringBuilder builder=new StringBuilder();
            builder.append("scheme=");
            builder.append(uri.getScheme());
            builder.append(" host=");
            builder.append(uri.getHost());
            builder.append(" param=");
            builder.append(uri.getQueryParameter("param"));
            Log.d("tag",builder.toString());
        }

    }

log输出内容

D/tag: scheme=app host=likui.me param=test
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值