IntentFilter简介 intent与intentfilter
简述:结构化描述intent匹配的信息。包含:action,categories and data(via type,scheme,path),还有priority, to order multiple matchingfilters.
IntentFilter中如果action为空,则视为通配符,如果type为空,则intent必须不设type,否则匹 配不上。
data被分为3个属性:type,scheme,authority/path任何设置的属性intent必须匹配上。
设置了scheme 而没设type,则intent也必须类似,不能设置type,也不能是content:URI.
设置了type而没设scheme:将匹配上没有URI的intent,或者content:,file:的uri。
设置了authority:必须指定一个或多个相关联的schemes
设置了path:唏嘘指定一个或多个相关联的schemes
匹配规则:
IntentFilter 匹配Intent的上的条件:
Action : 值相同 ,或则IntentFilter未指定action.
DataType:.系统通过调用Intent.resolve(ContentResolver)获取type,通配符*
在Intent/IntentFilter的MIME type中使用,区分大小写
DataScheme:系统通过调用Intent. getData() and Uri.getScheme())获取scheme,区分大小写
DataAuthority:必须有一个dataScheme匹配上且authority值匹配上,或者IntentFilter没有定义。Intent.getData() andUri.getAuthority()获取authority.
DataPath: scheme and authority必须先匹配上 ntent. getData() andUri.getPath(),获取. 或者IntentFilter没有定义
Categories:all of the categories in the Intent match categoriesgiven in the filter多余的Categorie,不影响intent匹配,如果IntentFilter
没有指定Categorie,则只能匹配上没有Categorie的intent。
常用intent列表:
Android Intent 用法汇总
显示网页
- <activity android:name="BrowserActivity"android:label="Browser" android:launchMode="singleTask"android:alwaysRetainTaskState="true"android:configChanges="orientation|keyboardHidden"android:theme="@style/BrowserTheme">
- <!--
For these schemes were not particular MIME type hasbeen
supplied, we are a good candidate.
-->
-<intent-filter>
<actionandroid:name="android.intent.action.VIEW"/>
<categoryandroid:name="android.intent.category.DEFAULT"/>
<categoryandroid:name="android.intent.category.BROWSABLE"/>
<data android:scheme="http"/>
<data android:scheme="https"/>
<data android:scheme="about"/>
</intent-filter>
- <!--
For these schemes where any of these particularMIME types
have been supplied, we are a goodcandidate.
-->
-<intent-filter>
<actionandroid:name="android.intent.action.VIEW"/>
<categoryandroid:name="android.intent.category.BROWSABLE"/>
<categoryandroid:name="android.intent.category.DEFAULT"/>
<data android:scheme="http"/>
<data android:scheme="https"/>
<dataandroid:mimeType="text/html"/>
<dataandroid:mimeType="text/plain"/>
<dataandroid:mimeType="application/xhtml+xml"/>
<dataandroid:mimeType="application/vnd.wap.xhtml+xml"/>
</intent-filter>
- <!--
We are also the main entry point of thebrowser.
-->
-<intent-filter>
<actionandroid:name="android.intent.action.MAIN"/>
<categoryandroid:name="android.intent.category.DEFAULT"/>
<categoryandroid:name="android.intent.category.LAUNCHER"/>
<categoryandroid:name="android.intent.category.BROWSABLE"/>
</intent-filter>
-<intent-filter>
<actionandroid:name="android.intent.action.WEB_SEARCH"/>
<categoryandroid:name="android.intent.category.DEFAULT"/>
<categoryandroid:name="android.intent.category.BROWSABLE"/>
<data android:scheme=""/>
<data android:scheme="http"/>
<data android:scheme="https"/>
</intent-filter>
-<intent-filter>
<actionandroid:name="android.intent.action.WEB_SEARCH"/>
<actionandroid:name="android.intent.action.MEDIA_SEARCH"/>
<categoryandroid:name="android.intent.category.DEFAULT"/>
</intent-filter>
-<intent-filter>
<actionandroid:name="android.intent.action.SEARCH"/>
<categoryandroid:name="android.intent.category.DEFAULT"/>
</intent-filter>
<meta-dataandroid:name="android.app.searchable"android:resource="@xml/searchable"/>
-<intent-filter>
<actionandroid:name="android.net.http.NETWORK_STATE"/>
<actionandroid:name="android.intent.action.PROXY_CHANGE"/>
</intent-filter>
</activity>
1. Uri uri =Uri.parse("http://google.com");
2. Intent it = newIntent(Intent.ACTION_VIEW,uri);
3.startActivity(it);
显示地图
1. Uri uri =Uri.parse("geo:38.899533,-77.036476");
2. Intent it = newIntent(Intent.ACTION_VIEW,uri);
3.startActivity(it);
4. //其他 geo URI範例
5.//geo:latitude,longitude
6.//geo:latitude,longitude?z=zoom
7.//geo:0,0?q=my+street+address
8.//geo:0,0?q=business+near+city
9.//google.streetview:cbll=lat,lng&cbp=1,yaw,,pitch,zoom&mz=mapZoom
路径规划
1. Uri uri =Uri.parse("http://maps.google.com/maps?f=d&saddr=startLatstartLng&daddr=endLatendLng&hl=en");
2. Intent it = newIntent(Intent.ACTION_VIEW,uri);
3.startActivity(it);
4. //where startLat, startLng,endLat, endLng are a long with 6 decimals like:50.123456
打电话
1.//叫出拨号程序
2. Uri uri =Uri.parse("tel:0800000123");
3. Intent it = newIntent(Intent.ACTION_DIAL,uri);
4.startActivity(it);
1.//直接打电话出去
2. Uri uri =Uri.parse("tel:0800000123");
3. Intent it = newIntent(Intent.ACTION_CALL,uri);
4.startActivity(it);
5. //用這個,要在AndroidManifest.xml中,加上
6.//<uses-permissionid="android.permission.CALL_PHONE"/>
传送SMS/MMS
1.//调用短信程序
2. Intent it = newIntent(Intent.ACTION_VIEW,uri);
3. it.putExtra("sms_body","The SMStext");
4.it.setType("vnd.android-dir/mms-sms");
5.startActivity(it);
1.//传送消息
2. Uri uri =Uri.parse("smsto://0800000123");
3. Intent it = newIntent(Intent.ACTION_SENDTO,uri);
4. it.putExtra("sms_body","The SMStext");
5.startActivity(it);
1. //传送MMS
2. Uri uri =Uri.parse("content://media/external/images/media/23");
3. Intent it = newIntent(Intent.ACTION_SEND);
4. it.putExtra("sms_body","sometext");
5.it.putExtra(Intent.EXTRA_STREAM,uri);
6.it.setType("image/png");
7.startActivity(it);
传送 Email
1. Uri uri =Uri.parse("mailto:xxx@abc.com");
2. Intent it = newIntent(Intent.ACTION_SENDTO,uri);
3.startActivity(it);
1. Intent it = newIntent(Intent.ACTION_SEND);
2.it.putExtra(Intent.EXTRA_EMAIL,"me@abc.com");
3.it.putExtra(Intent.EXTRA_TEXT, "The email bodytext");
4.it.setType("text/plain");
5.startActivity(Intent.createChooser(it, "Choose EmailClient"));
1. Intent it=newIntent(Intent.ACTION_SEND);
2. String[]tos={"me@abc.com"};
3. String[]ccs={"you@abc.com"};
4.it.putExtra(Intent.EXTRA_EMAIL,tos);
5.it.putExtra(Intent.EXTRA_CC,ccs);
6.it.putExtra(Intent.EXTRA_TEXT, "The email bodytext");
7.it.putExtra(Intent.EXTRA_SUBJECT, "The email subjecttext");
8.it.setType("message/rfc822");
9.startActivity(Intent.createChooser(it, "Choose EmailClient"));
1.//传送附件
2. Intent it = newIntent(Intent.ACTION_SEND);
3.it.putExtra(Intent.EXTRA_SUBJECT, "The email subjecttext");
4.it.putExtra(Intent.EXTRA_STREAM,"file:///sdcard/mysong.mp3");
5.sendIntent.setType("audio/mp3");
6.startActivity(Intent.createChooser(it, "Choose EmailClient"));
播放多媒体
Uri uri =Uri.parse("file:///sdcard/song.mp3");
Intent it = new Intent(Intent.ACTION_VIEW,uri);
it.setType("audio/mp3");
startActivity(it);
Uri uri =Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI,"1");
Intent it = new Intent(Intent.ACTION_VIEW,uri);
startActivity(it);
Market 相关
1.//寻找某个应用
2.Uri uri =Uri.parse("market://search?q=pname:pkg_name");
3.Intent it = new Intent(Intent.ACTION_VIEW,uri);
4.startActivity(it);
5.//where pkg_name is the full package path for anapplication
1.//显示某个应用的相关信息
2.Uri uri =Uri.parse("market://details?id=app_id");
3.Intent it = new Intent(Intent.ACTION_VIEW,uri);
4.startActivity(it);
5.//where app_id is the application ID, find theID
6.//by clicking on your application on Markethome
7.//page, and notice the ID from the addressbar
Uninstall 应用程序
1.Uri uri = Uri.fromParts("package", strPackageName,null);
2.Intent it = new Intent(Intent.ACTION_DELETE,uri);
3.startActivity(it);
更多阅读
银狐犬与萨摩耶的区别 阿拉斯加犬和哈士奇
银狐犬与萨摩耶的区别——简介 银狐与萨摩耶外形都有一定区别。很多朋友会把银狐给认作萨摩耶,可其实,就外形而言银狐和萨摩耶都是不同的。比如眼睛,萨摩耶的眼睛呈杏仁状,银狐的眼睛,大儿明亮且圆。又如耳朵,萨摩耶的耳朵相对来说更加厚
混沌与秩序电脑版下载安装详细流程 混沌与秩序怎么安装
混沌与秩序电脑版下载安装详细流程——简介 混沌与秩序做为一款大型的3D在线魔幻游戏,它将为玩家提供全3D的游戏画面体验,在这里有着多样的场景——黑暗的森林、炎热的沙漠、崎岖的山地以及更多不同的场景,通过这些可以让玩家接触到各
韭菜与韭黄的区别是什么 韭黄和韭菜有什么区别
韭菜与韭黄的区别是什么——简介韭菜与韭黄都是农贸市场上常见的蔬菜,二者虽同出一根,但却有着本质的区别。下面就从几个方面来说说二者的区别。韭菜与韭黄的区别是什么——工具/原料韭菜韭黄韭菜与韭黄的区别是什么——方法/步骤
二进制数与十六进制数之间如何互相转换 二进制转换十六进制
二进制数与十六进制数之间如何互相转换——简介二进制与十六进制之间的转换与二进制和八进制之间的转换很类似,今天我们来详细看一下:首先,我们来看一下数学关系即24=16,即用四位二进制表示一位八进制。二进制数与十六进制数之间如何互
函数COUNT与COUNTA的区别 excel count和counta
函数COUNT与COUNTA的区别——简介COUNT与COUNTA经常用在Excel统计参数列表中指定项个数的情景中。而两者也是存在这差别的,如果不注意的话,这两个函数就容易搞混;这两个函数应该说很简单,也比较容易掌握,但大多数人可能只知COUNT不知COUN