使用URL Scheme/ host/ path/ port调起Android APP

  用户在访问我们的网页时,判断出这个用户手机上是否安装了我们的App,如果安装了则直接从网页上打开APP,否则就引导用户前往下载,从而形成一个推广上的闭环。这里只针对从网页端打开本地APP。
  将一组APP设置一个统一的入口,然后根据实际需要在调用不同子APP,即所谓的APP业务组件化,URL Scheme在其中有着重要的作用。
Url scheme和Android intent唤起APP- https://blog.csdn.net/qq_23089525/article/details/52769315
第三方应用通过Schema协议打开APP- https://github.com/zhufeng1222/SchemaLoadAPP

> Android使用URL Scheme/ host/ path/ port调起APP
方法一:App A打开App B(原生App使用Scheme调起App)
Intent intent=new Intent(Intent.ACTION_VIEW,Uri.parse("http://baidu:8080/news?system=pc&id=45464"));
startActivity(intent);

方法二:(在WebView中调起App)
<a href="http://baidu:8080/news?system=pc&id=45464">test</a>
(<a href="xl://goods:8888/goodsDetail?goodsId=10011002">打开商品详情</a>)
<activity
    android:name="com.example.helloworld.MainActivity">
    <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:scheme="http" android:host="baidu" android:path="/news" android:port="8080"/>
    </intent-filter> 
</activity>

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Intent intent = getIntent();
        String scheme = intent.getScheme();
        String dataString = intent.getDataString();
        Uri uri = intent.getData();
        System.out.println("scheme:" + scheme);
        if (uri != null) {
            //完整的url信息
            String url = uri.toString();
            //scheme部分
            String schemes = uri.getScheme();
            //host部分
            String host = uri.getHost();
            //port部分
            int port = uri.getPort();
            //访问路径
            String path = uri.getPath();
            //编码路径
            String path1 = uri.getEncodedPath();
            //query部分
            String queryString = uri.getQuery();
            //获取参数值
            String systemInfo = uri.getQueryParameter("system");
       String id=uri.getQueryParameter("id");  
       System.out.println("host:" + host);
       System.out.println("dataString:" + dataString);
        System.out.println("id:" + id); 
       System.out.println("path:" + path); 
       System.out.println("path1:" + path1); 
       System.out.println("queryString:" + queryString); 
    } 
  } 
}

猜你喜欢

转载自blog.csdn.net/ShareUs/article/details/82263574