宝安建设网站公司,2023房地产最新消息,直播软件开发源码,做二手网站好的名字本文地址#xff1a;http://www.cnblogs.com/wuyudong/p/5677473.html#xff0c;转载请注明源地址。 《Android 显示意图激活另外一个Actitity》一文介绍了一种激活Activity的方法 本文通过清单文件#xff08;AndroidManifest.xml#xff09;来实现意图的配置 Intent-fil…本文地址http://www.cnblogs.com/wuyudong/p/5677473.html转载请注明源地址。 《Android 显示意图激活另外一个Actitity》一文介绍了一种激活Activity的方法 本文通过清单文件AndroidManifest.xml来实现意图的配置 Intent-filter属性详解 如果一个 Intent 请求在一片数据上执行一个动作 Android 如何知道哪个应用程序和组件能用来响应这个请求呢 Intent Filter就是用来注册 Activity 、 Service 和 Broadcast Receiver 具有能在某种数据上执行一个动作的能力。使用 Intent Filter 应用程序组件告诉 Android 它们能为其它程序的组件的动作请求提供服务包括同一个程序的组件、本地的或第三方的应用程序。为了注册一个应用程序组件为 Intent 处理者在组件的 manifest 节点添加一个 intent-filter 标签。在 Intent Filter 节点里使用下面的标签关联属性你能指定组件支持的动作、种类和数据 1动作测试 intent-filter元素中可以包括子元素action比如 intent-filter action android:namecom.example.project.SHOW_CURRENT /action android:namecom.example.project.SHOW_RECENT /action android:namecom.example.project.SHOW_PENDING /
/intent-filter 一条intent-filter元素至少应该包含一个action否则任何Intent请求都不能和该intent-filter匹配。如果Intent请求的Action和intent-filter中个某一条action匹配那么该Intent就通过了这条intent-filter的动作测试。如果Intent请求或intent-filter中没有说明具体的Action类型那么会出现下面两种情况。 (1) 如果intent-filter中没有包含任何Action类型那么无论什么Intent请求都无法和这条intent-filter匹配(2) 反之如果Intent请求中没有设定Action类型那么只要intent-filter中包含有Action类型这个Intent请求就将顺利地通过intent-filter的行为测试。 2类别测试 intent-filter元素可以包含category子元素比如 intent-filter . . . category android:nameandroid.Intent.Category.DEFAULT /category android:nameandroid.Intent.Category.BROWSABLE /
/intent-filter 只有当Intent请求中所有的Category与组件中某一个IntentFilter的category完全匹配时才会让该 Intent请求通过测试IntentFilter中多余的category声明并不会导致匹配失败。一个没有指定任何类别测试的 IntentFilter仅仅只会匹配没有设置类别的Intent请求。 3数据测试 数据在intent-filter中的描述如下: intent-filter . . . data android:typevideo/mpeg android:schemehttp . . . /data android:typeaudio/mpeg android:schemehttp . . . /
/intent-filter data元素指定了希望接受的Intent请求的数据URI和数据类型URI被分成三部分来进行匹配scheme、 authority和path。其中用setData()设定的Inteat请求的URI数据类型和scheme必须与IntentFilter中所指定的一致。若IntentFilter中还指定了authority或path它们也需要相匹配才会通过测试。 ❑ action使用 android:name 特性来指定对响应的动作名。动作名必须是独一无二的字符串所以一个好的习惯是使用基于 Java 包的命名方式的命名系统。❑ category 使用 Android:category 属性用来指定在什么样的环境下动作才被响应。每个 Intent Filter 标签可以包含多个 category 标签。你可以指定自定义的种类或使用 Android 提供的标准值如下所示 ❑ ALTERNATIVE你将在这章的后面所看到的一个 Intent Filter 的用途是使用动作来帮忙填入上下文菜单。 ALTERNATIVE 种类指定在某种数据类型的项目上可以替代默认执行的动作。例如一个联系人的默认动作时浏览它替代的可能是去编辑或删除它。❑ SELECTED_ALTERNATIVE与 ALTERNATIVE 类似但 ALTERNATIVE 总是使用下面所述的 Intent 解析来指向单一的动作。SELECTED_ALTERNATIVE在需要一个可能性列表时使用。❑ BROWSABLE指定在浏览器中的动作。当 Intent 在浏览器中被引发都会被指定成 BROWSABLE 种类。❑ DEFAULT设置这个种类来让组件成为 Intent Filter 中定义的 data 的默认动作。这对使用显式 Intent 启动的 Activity 来说也是必要的。❑ GADGET通过设置 GADGET 种类你可以指定这个 Activity 可以嵌入到其他的 Activity 来允许。❑ HOMEHOME Activity 是设备启动登陆屏幕时显示的第一个 Activity 。通过指定 Intent Filter 为 HOME 种类而不指定动作的话你正在将其设为本地 home 画面的替代。❑ LAUNCHER使用这个种类来让一个 Activity 作为应用程序的启动项。❑ datadata 标签允许你指定组件能作用的数据的匹配如果你的组件能处理多个的话你可以包含多个条件。你可以使用下面属性的任意组合来指定组件支持的数据❑ android:host指定一个有效的主机名例如 com.google 。❑ android:mimetype允许你设定组件能处理的数据类型。例如type android:value”vnd.android.cursor.dir/*”/能匹配任何 Android 游标。❑ android:path有效地 URI 路径值例如 /transport/boats/ 。❑ android:port特定主机上的有效端口。❑ android:scheme需要一个特殊的图示例如 content 或 http 。 实战一下 添加《Android 显示意图激活另外一个Actitity》中的跳转功能实现隐式意图激活第三个界面 代码 // 采用隐式意图激活第三个界面public void click3(View view) {Intent intent new Intent();intent.setAction(com.wuyudong.xxx);intent.addCategory(android.intent.category.DEFAULT);//intent.setData(Uri.parse(wuyudong:hahaha));//指定数据类型//intent.setType(vnd.android.cursor.item/xixixi);intent.setDataAndType(Uri.parse(wuyudong:hahaha), vnd.android.cursor.item/xixixi);startActivity(intent);} 可以在OtherScreenActivity接收数据代码如下 public class OtherScreenActivity extends Activity {//重写activity的onCreate方法 方法里面设置初始化程序的界面Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_two);Intent intent getIntent(); //获取到激活它的意图Uri uri intent.getData();System.out.println(uri.getScheme());}
} 清单文件代码如下 ?xml version1.0 encodingutf-8?
manifest xmlns:androidhttp://schemas.android.com/apk/res/androidpackagecom.wuyudong.twoactivityandroid:versionCode1android:versionName1.0 uses-sdkandroid:minSdkVersion8android:targetSdkVersion17 /applicationandroid:allowBackuptrueandroid:icondrawable/ic_launcherandroid:labelstring/app_nameandroid:themestyle/AppTheme activityandroid:icondrawable/icon1android:namecom.wuyudong.twoactivity.MainActivityandroid:labelstring/activity01 intent-filteraction android:nameandroid.intent.action.MAIN /category android:nameandroid.intent.category.LAUNCHER //intent-filter/activityactivityandroid:icondrawable/icon2android:namecom.wuyudong.twoactivity.OtherScreenActivityandroid:labelstring/activity02 intent-filteraction android:namecom.wuyudong.xxx/data android:schemewuyudong android:mimeTypevnd.android.cursor.item/xixixi/datacategory android:nameandroid.intent.category.DEFAULT//intent-filter/activity/application/manifest