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

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

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

<application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <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="paraches" />
            </intent-filter>
            </activity>
    </application>


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

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Intent intent = getIntent();
        String action = intent.getAction();
        if (Intent.ACTION_VIEW.equals(action)) {
        	Uri uri = intent.getData();
        	if (uri != null) {
                String host = uri.getHost();
                String dataString = intent.getDataString();
                String id = uri.getQueryParameter("id");
                String path = uri.getPath();
                String path1 = uri.getEncodedPath();
                String queryString = uri.getQuery();
                Log.d("Alex", "host:"+host);
                Log.d("Alex", "dataString:" + dataString);
                Log.d("Alex", "id:" + id);
                Log.d("Alex", "path:" + path);
                Log.d("Alex", "path1:" + path1);
                Log.d("Alex", "queryString:" + queryString);
            }
        }
    }


看下Log情况,如下:

host:schemedemo
dataString:paraches://schemedemo/get/info?id=10000
id:10000
path:/get/info
path1:/get/info
queryString:id=10000

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

if (url.startsWith("paraches")) {
    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
    startActivity(intent);
    finish();
                    
}   

 


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

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

也可以不要域名和路径,写成

<a href="paraches://?id=10000">open android app</a>

paraches:自定义的scheme,想叫任何名字都可以,只要activity注册那里和网页链接一致就行

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

http://download.csdn.net/download/msn465780/10234615

下载地址

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
Android开发中,android:scheme 是一个很重要的属性,用于指定一个应用程序的URI schemeURI(Uniform Resource Identifier)是用于标识和定位资源的字符串,通常用于网络资源的访问。 通过在AndroidManifest.xml文件中使用 android:scheme 属性,可以告诉Android系统该应用程序支持通过特定的URI scheme来进行跳转。例如,可以指定一个自定义的URI scheme,比如"myapp",然后在其他应用程序中使用这个自定义URI来启动该应用程序。 具体步骤如下: 1. 在 AndroidManifest.xml 文件的<application>标签内部添加以下代码: ```xml <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="myapp" /> </intent-filter> ``` 这样就指定了该应用程序支持通过"myapp" scheme进行跳转。 2. 然后在其他应用程序中,可以通过以下代码来启动该应用程序: ```java String uriString = "myapp://example"; Uri uri = Uri.parse(uriString); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent); ``` 在上述代码中,使用 Uri.parse() 方法将字符串转换为Uri对象,然后使用 Intent.ACTION_VIEW 和指定Uri对象创建一个Intent对象,最后通过 startActivity() 方法启动该Intent。 通过以上步骤,就可以在其他应用程序中使用指定URI scheme跳转到该应用程序。 需要注意的是,为了确保跳转成功,需要确保该应用程序已经安装在设备上,并且支持该指定URI scheme
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值