Android 通过H5跳转到App指定页面

Posted LuckFour

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 通过H5跳转到App指定页面相关的知识,希望对你有一定的参考价值。

短信链接跳转APP

平时我们会收到广告短信,比如某东,某宝,里面附加着链接,当你点开链接(手机自带的浏览器),发现浏览器打开后,等一下下,就会打开对应的APP,直接到广告相应的页面。

URL Schema属性:

URL Schema 的属性有 Scheme、Host、port、path、query。
scheme:启动的App的标识,相当于协议吧。
host:域名,不重要。
query:传给app参数的Key和Value 。

比如:

liubike://mine/settings?type=1&&id=7&&name=测试跳转

这里我们可以得知:

scheme: liubike  
host:mine  
path:settings
query:type=1&&id=7&&name=测试跳转

这样,我们根据liiubike协议,就拥有了跳转到App任意页面的能力。

H5前端代码如下:

<!DOCTYPE html>
<html>
<head>
  <title>android跳转测试</title>
</head>
<body>
  <a href="liubike://mine/settings?type=1&&id=7&&name=测试跳转">打开</a></br>
</body>
</html>

Android端代码如下:
首先,在AndroidManifest中,对SplashActivity,添加如下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="liubike"/>
</intent-filter>

data里scheme、path、host都可以指定,但是,由于我们跳转的页面是未知的,此处,我们只指定schema。
接着,我们在启动页面SplashActivity的onCreate中,实现跳转数据的接收

public class SplashActivity extends AppCompatActivity

  public static final String TYPE_INTENT = "type";
  public static final String ID_INTENT = "id";
  public static final String NAME_INTENT = "name";
  @Override
  protected void onCreate(@Nullable Bundle savedInstanceState)
  
    super.onCreate(savedInstanceState);
    setContentView(R.layout.first_activity);

    //如果是从网址打开的
    Intent intent = getIntent();
    if (intent.getData() != null)
    
      Uri uri = intent.getData();
      uri.getScheme();//获取scheme
      uri.getHost();//获取host
      uri.getAuthority();//获取authority
      String type = uri.getQueryParameter(TYPE_INTENT);
      String id= uri.getQueryParameter(ID_INTENT);
      String name = uri.getQueryParameter(NAME_INTENT);
      //标题转UTF-8码
      if (!TextUtils.isEmpty(name))
      
        try
        
          name = URLDecoder.decode(name, "UTF-8");
         catch (UnsupportedEncodingException e)
        
          e.printStackTrace();
        
      
      //获取到的参数跳转
      Intent intentStart = new Intent(this,ActivityMain.class);
      intentStart.putExtra(TYPE_INTENT,type);
      intentStart.putExtra(ID_INTENT ,id);
      intentStart.putExtra(NAME_INTENT,name);
      startActivity(intentStart);
      finish();
    
  

//启动页面SplashActivity的onCreate中编码
//注:参数可以传空的,如果是中文要转码

以上是关于Android 通过H5跳转到App指定页面的主要内容,如果未能解决你的问题,请参考以下文章

Android与H5交互 -- 点击H5跳转到 Android原生 页面

Android Scheme URL 使用方法

Android外部唤醒APP跳转指定页面

Android外部唤醒APP跳转指定页面

Android外部唤醒APP跳转指定页面

Android外部唤醒APP跳转指定页面