從Web連結跳轉到app指定頁面並傳值
阿新 • • 發佈:2019-02-08
在manifest檔案中申明scheme和parentActivity
<activity android:name=".SecondActivity" android:parentActivityName=".MainActivity"> <!--申明parentActivity,使用者按返回鍵後返回主頁面--> <!--在Android 4.1版本之後,可以直接使用android:parentActivityName這個屬性來進行指定--> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".MainActivity" /> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <!--下面所設定的值需要和html端對調--> <!--在data裡設定了 scheme和host,則該Activity可以接收和處理類似於 "share://article/XXX"的連結--> <data android:host="article" android:scheme="share" android:pathPrefix="/attr" /> </intent-filter> </activity>
h5跳轉
<a href="[scheme]://[host]/[path]?[query]">啟動應用程式</a>
示例
<a href="share://article/attr?name=zhangsan&age=26">啟動應用程式</a>
scheme:判別啟動的App
host:適當記述
path:傳值時必須的key ※沒有也可以
query:獲取值的Key和Value ※沒有也可以
activity中獲取傳遞過來的引數
Intent i_getvalue = getIntent(); String action = i_getvalue.getAction(); if(Intent.ACTION_VIEW.equals(action)){ Uri uri = i_getvalue.getData(); if(uri != null){ String name = uri.getQueryParameter("name"); String age= uri.getQueryParameter("age"); } }
在二級頁面中對返回鍵做處理
由於是網頁開啟的app指定二級頁面,activity棧中只存在SecondActivity這一個activity,所以當點選返回按鈕的時候,會直接退出當前app。我們希望按返回的時候,回到MainActivity,所以這裡需要處理一下
@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(); }