Sivo 悉见

android:scheme 通过uri跳转到APP应用指定Activity

匿名 · 更新于 2016/12/19

最近公司有个需求,点击第三方APP或者APP内的H5页面然后直接跳转到APP里面,比如浏览器打开一个H5页面,然后点击某个链接就直接到APP的某个指定的Activity,经过研究发现实现还是蛮easy的,下面说下方法吧。

首先,在AndroidManifest.xml里面进行配置,在对应的Activity加上一个intent-filter, 如下:

 

[html] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. <application  
  2.         android:icon="@drawable/ic_launcher"  
  3.         android:label="@string/app_name"  
  4.         android:theme="@style/AppTheme" >  
  5.         <activity  
  6.             android:name=".MainActivity"  
  7.             android:label="@string/title_activity_main" >  
  8.             <intent-filter>  
  9.                 <action android:name="android.intent.action.MAIN" />  
  10.   
  11.                 <category android:name="android.intent.category.LAUNCHER" />  
  12.             </intent-filter>  
  13.             <intent-filter>  
  14.                 <action android:name="android.intent.action.VIEW" />  
  15.                 <category android:name="android.intent.category.DEFAULT"/>  
  16.                 <category android:name="android.intent.category.BROWSABLE"/>  
  17.                 <data android:scheme="paraches" />  
  18.             </intent-filter>  
  19.             </activity>  
  20.     </application>  

接下来在对应的这个Activity加上相关解析代码,如下:

 

 

[html] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. @Override  
  2.     public void onCreate(Bundle savedInstanceState) {  
  3.         super.onCreate(savedInstanceState);  
  4.         setContentView(R.layout.activity_main);  
  5.   
  6.         Intent intent = getIntent();  
  7.         String action = intent.getAction();  
  8.         if (Intent.ACTION_VIEW.equals(action)) {  
  9.             Uri uri = intent.getData();  
  10.             if (uri != null) {  
  11.                 String host = uri.getHost();  
  12.                 String dataString = intent.getDataString();  
  13.                 String id = uri.getQueryParameter("id");  
  14.                 String path = uri.getPath();  
  15.                 String path1 = uri.getEncodedPath();  
  16.                 String queryString = uri.getQuery();  
  17.                 Log.d("Alex", "host:"+host);  
  18.                 Log.d("Alex", "dataString:" + dataString);  
  19.                 Log.d("Alex", "id:" + id);  
  20.                 Log.d("Alex", "path:" + path);  
  21.                 Log.d("Alex", "path1:" + path1);  
  22.                 Log.d("Alex", "queryString:" + queryString);  
  23.             }  
  24.         }  
  25.     }  

看下Log情况,如下:

 

 

[html] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. host:schemedemo  
  2. dataString:paraches://schemedemo/get/info?id=10000  
  3. id:10000  
  4. path:/get/info  
  5. path1:/get/info  
  6. queryString:id=10000  

 

经过以上步骤就可以在第三方APP打开自己想要的APP指定页面了,是不是很easy啊,再说下应用内点击链接也可以打开,需要如下代码:

 

[html] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. if (url.startsWith("paraches")) {  
  2.     Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));  
  3.     startActivity(intent);  
  4.     finish();  
  5.                       
  6. }     

 


 

简单网页如下,这个网页可以用浏览器打开,然后点击跳转链接:

 

 

<a href="paraches://schemedemo/get/info?id=10000">open Android app</a>

 

不过我相信可能还是有小伙伴会迷路,这里上传一下项目demo,这个网页就自己建立了,我就不上传了,链接如下:

http://download.csdn.NET/detail/msn465780/9516335

点击打开链接