Android中通过Js唤起Activity

通过网页唤起一个app这样的场景有很多, 我们来看看如何实现这样的一个功能.
通过html启动Activity的原理是js代码运行了Url去匹配对应的Activity. 我们可以通过配置Activity的intent-filter来匹配一个Url.


            
                
                
                
                
            

data部分就是在构造一个匹配的Url, 启动比较常用的几个字段:
一个网址:https://zhidao.baidu.com:8080/question?name=google&page=1
scheme : 协议名,如同上面的 https.
host : 域名,zhidao.baidu.com
port : 端口号
parh : 路径 , question
query parameter : 查询参数,name=google&page=1
这里Activity的data部分你都可以自定义,以达到唯一匹配,下面我们来看看如果通过js代码启动它.
这里我们通过WebView去加载一段html, 从html跳转一个指定Activity来示范一下.
先完成一段启动该Activity的Js代码





    WEB唤起原生APP




 Simple Launch with parameters 

下面再来在webview中加载该js

public class MainActivity extends AppCompatActivity {

    private WebView mWebView;

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

        mWebView = findViewById(R.id.web_view);

        mWebView.loadUrl("file:///android_asset/callback.html");
    }
}

注意我的html文件放在了这里


Android中通过Js唤起Activity_第1张图片
image.png

SchemeActivity这个画面布局如下

public class SchemeActivity extends AppCompatActivity {
    TextView tv_data;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_scheme);
        tv_data = findViewById(R.id.tv_data);

        Uri uri = getIntent().getData();
        StringBuilder sb = new StringBuilder();
        // 唤起链接
        sb.append("string : ").append(getIntent().getDataString()).append("\n");
        sb.append("scheme : ").append(uri.getScheme()).append("\n");
        sb.append("host : ").append(uri.getHost()).append("\n");
        sb.append("port : ").append(uri.getPort()).append("\n");
        sb.append("path : ").append(uri.getPath()).append("\n");
        // 接收唤起的参数
        sb.append("name : ").append(uri.getQueryParameter("name")).append("\n");
        sb.append("page : ").append(uri.getQueryParameter("page"));

        tv_data.setText(sb.toString());
    }
}

启动该webview的工程.

Android中通过Js唤起Activity_第2张图片
image.png

接着点击Simple Launch with parameters按钮,就会通过Url schemedemo://eric.com:8080/test/scheme?name=google&page=1匹配到SchemeActivity, 并实现跳转.
Android中通过Js唤起Activity_第3张图片
image.png

你可能感兴趣的:(Android中通过Js唤起Activity)