Android:H5、web調起App並且傳遞參數

1、在清單文件的Activity聲明裏添加:

<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="vmd" android:host="music" android:pathPrefix="/play"/>
</intent-filter>
  • scheme:判別啓動的App
  • host:適當記述
  • pathPrefix:傳值時必須的key ※沒有也可以
  • query:獲取值的Key和Value ※沒有也可以 

 2、H5中調起:

<a href="[scheme]://[host]/[pathPrefix]?[query]">啓動應用程序</a> 
<!--示例-->
<a href="vmd://music/play?song=kugou&id=1">啓動應用程序</a>

3、Activity中接收參數:

Intent intent = getIntent();  
String action = intent.getAction();    
if(Intent.ACTION_VIEW.equals(action)){  
    Uri uri = intent.getData();  
    if(uri != null){  
        String song = uri.getQueryParameter("song");  //song值就是kugou了
        String id= uri.getQueryParameter("id");  //id就是1
        //do something
    }  
}

4、在二級頁面中對返回鍵做處理(根據自己項目的需求決定做不做)

@Override
public void onBackPressed() {
        //NavUtils.getParentActivityIntent()方法可以獲取到跳轉至父Activity的Intent
        //如果父Activity和當前Activity是在同一個Task中的,則直接調用navigateUpTo()方法進行跳轉
        //如果不在同一個Task中的,則需要藉助TaskStackBuilder創建一個新的Task
        Intent upIntent = NavUtils.getParentActivityIntent(this);
        if (NavUtils.shouldUpRecreateTask(this, upIntent)) {
            TaskStackBuilder.create(this)
                    .addNextIntentWithParentStack(upIntent)
                    .startActivities();
        } else {
            upIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            NavUtils.navigateUpTo(this, upIntent);
        }
        super.onBackPressed();
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章