2.URL Scheme基礎介紹php
3.URL Scheme如何使用android
URL Scheme使用場景,目前1,2,5使用場景很廣,有沒有一種熟悉的感受?git
* 1.經過小程序,利用Scheme協議打開原生app * 2.H5頁面點擊錨點,根據錨點具體跳轉路徑APP端跳轉具體的頁面 * 3.APP端收到服務器端下發的PUSH通知欄消息,根據消息的點擊跳轉路徑跳轉相關頁面 * 4.APP根據URL跳轉到另一個APP指定頁面 * 5.經過短信息中的url打開原生app
String urlStr="http://www.ycbjie.cn:80/yc?id=hello&name=cg"; //url = protocol + authority(host + port) + path + query //協議protocol= http //域名authority= www.ycbjie.cn:80 //頁面path= /yc //參數query= id=hello&name=cg //authority = host + port //主機host= www.ycbjie.cn //端口port= 80
<activity android:name=".ui.main.ui.activity.SchemeFirstActivity" android:screenOrientation="portrait"> <!--Android 接收外部跳轉過濾器--> <!--要想在別的App上能成功調起App,必須添加intent過濾器--> <intent-filter> <!-- 協議部分配置 ,注意須要跟web配置相同--> <!--協議部分,隨便設置 yc://ycbjie:8888/from?type=yangchong --> <data android:scheme="yc" android:host="ycbjie" android:path="/from" android:port="8888"/> <!--下面這幾行也必須得設置--> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <action android:name="android.intent.action.VIEW" /> </intent-filter> </activity>
public class SchemeFirstActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); Uri uri = getIntent().getData(); if (uri != null) { //獲取指定參數值 String type = uri.getQueryParameter("type"); Log.e( "UrlUtils","main: " + type); if(type.equals("yangchong")){ ActivityUtils.startActivity(GuideActivity.class); }else if(type.equals("main")){ ActivityUtils.startActivity(MainActivity.class); } } finish(); } }
Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse("yc://ycbjie:8888/from?type=yangchong")); startActivity(intent);
<a href="yc://ycbjie:8888/from?type=yangchong">打開叮咚app</a>
PackageManager packageManager = getPackageManager(); Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("yc://ycbjie:8888/from?type=yangchong")); List<ResolveInfo> activities = packageManager.queryIntentActivities(intent, 0); boolean isValid = !activities.isEmpty(); if (isValid) { startActivity(intent); }