android:scheme 常用类型,android scheme

有时候我们开发的应用希望让其他应用也可以访问,Android平台而言,可以通过Uri(统一资源标识符Uniform Resource Identifier)来实现.

Android中 URI的组成部分scheme, authority and path,其中authority又分为host和port。格式如下: scheme://host:port/path

举个实际的例子:

content://com.dx.test:2020/folder/myfolder/dir

其中scheme 对应 content://

authority 对应 com.dx.test:2020

host 对应 com.dx.test

port 对应 2020

path 对应 /folder/myfolder/dir

这时候我们想到在mainifest.xml里面定义的activity标签下的intent-filter子标签data里面的各个属性,实际上与上面是有对应关系的

android:mimeType="string"

android:path="string"

android:pathPattern="string"

android:pathPrefix="string"

android:port="string"

android:scheme="string" />

比如有在A应用程序的mainifest.xml中有这么个Activity

如上所示,在data里设置了 scheme和host,则该Activity可以接收和处理类似于 "sharetest://data/XXX"的链接。

在A应用程序的TestActivity中编写处理Scheme的逻辑

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.util.Log;

/**

* Created by dengxuandeng on 16-3-9.

*/

public class TestActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.test_layout);

Intent a = getIntent();

Log.d("scheme", a.toString());

}

}

这里为了方便 直接用log打出来了.

到这里 A 程序就准备OK了.

在B应用程序中,可以直接写一个函数 调起A引用程序中的这个TestActivity

public void gotoScheme(String url) {

Intent intent = new Intent(Intent.ACTION_DEFAULT, Uri.parse(url));

Bundle bundle = new Bundle();

intent.putExtras(bundle);

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);

this.startActivity(intent);

}

调起的时候直接写

gotoScheme("sharetest://data/123141")

那么使用B程序使用Scheme调起 A程序的TestActivity的时候,可以看到A程序的TestActivity打出来的log

03-09 11:35:48.126 1088-1088/com.dear.schemetest D/scheme: Intent { act=android.intent.action.VIEW dat=sharetest://data/123141 flg=0x24000000 cmp=com.dear.schemetest/.TestActivity (has extras) }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值