場景
產品中有個功能是分享,使用者點選分享的連結可開啟app(若沒有下載,跳轉應用寶下載),進入相應的頁面。
程式碼
一般會在閃屏頁新增以下程式碼(程式的入口)
在AndroidManifest.xml
中
<activity
android:name=".mvvm.splash.adsplash.AdSplashActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:screenOrientation="portrait"
android:theme="@style/SplashTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
=======這裡是新增的程式碼 start======
<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="ylbb"/>
</intent-filter>
=======這裡是新增的程式碼 end=======
</activity>
複製程式碼
接下來,在AdSplashActivity中接收並處理傳過來的引數,在onCreate中。
class AdSplashActivity : BaseActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
// 網頁開啟app 進入測評 詳情
if (intent.data.checkNotNull()) {
var productId = intent.data.getQuery()
if (productId.checkNotNull()) {
//這裡寫邏輯處理
}
}
}
}
複製程式碼
跟h5協商好對應的引數欄位
<html>
<meta charset="UTF-8">
<body>
<h1>Test Scheme</h1> <!--自動載入隱藏頁面跳轉-->
<!--手動點選跳轉-->
<a href="ylbb://ceping:productId?666">點選開啟APP並將值傳過去</a>
</body>
</html>
複製程式碼
補充
- 若網頁定義為:
ylbb://ylbb.com:80/params?p=6&id=7
Intent intent = getIntent();
String scheme = intent.getScheme();// ylbb
Uri uri = intent.getData();
if (uri != null) {
String host = uri.getHost();//ylbb.com
String dataString = intent.getDataString();//ylbb://ylbb.com:80/params?p=6&id=7
String id = uri.getQueryParameter("id");//7
String path = uri.getPath();///params
String path1 = uri.getEncodedPath();//params
String queryString = uri.getQuery();//p=6&id=7
}
複製程式碼
- 若
getIntent.getData()
為null
,可能是在其他Activity
新增的scheme
- 一般新增在閃屏頁(app啟動一些初始化操作都在這裡進行),但是接收到資料可暫時儲存下來,在閃屏頁過後再去處理(如:
MainActivity
)
參考連結: