Android Intent-Filter中的action
来源:互联网 发布:淘宝上有没有卖视频的 编辑:程序博客网 时间:2024/06/10 23:57
在讲action之前,我跟大家回忆一个场景。用过Android手机的人应该都知道,比如说我在某个App例如新浪微博中点击拍照,会跳转到照相机的界面。但是当我新装了camer360或之类的第三方照相app的时候在微博中点击照相就会先弹出一个Dialog来让我选择是使用默认camer还是camer360.
ok,在讲完刚刚那个场景之后我给大家介绍一下显示intent 与隐式intent。
对于明确指出了目标组件名称的Intent,我们称之为“显式Intent”。对于没有明确指出目标组件名称的Intent,则称之为“隐式 Intent”。Android系统使用IntentFilter 来寻找与隐式Intent相关的对象。(关于IntentFilter我们马上就会讲到。)
显式Intent直接用组件的名称定义目标组件,这种方式很直接。但是由于开发人员往往并不清楚别的应用程序的组件名称,因此,显式Intent更 多用于在应用程序内部传递消息。比如在某应用程序内,一个Activity启动一个Service。隐式Intent恰恰相反,它不会用组件名称定义需要 激活的目标组件,它更广泛地用于在不同应用程序之间传递消息。
显式Intent,即需要指明跳转的activity对象或action,如:Intent intent = new Intent(MainActivity.this,BActivity.class);new Intent("com.h3c.intent.ACTION_VIEW");
隐式Intent,如果要跳转到一个未知路径,但是已知功能的Activity就要用到隐式intent,如;Intent intent = new Intent(Intent.ACTION_SEND);
===========================================================================================================
显式Intent的两种方法
一、指定要跳转的Activity的类
实例一:
有三个Activity:MainActivity.java/BAcitvity.java/CActivity.java
假设这是一个照相应用MainActivity是程序入口,BActivity和CActivity都可以处理照相的内容。
在我们不会使用action的时候我们要使这个应用既可以使用BActivity照相,又能使用CActivity照相如何实现?
当然是在MainActivity中写两个Button,
new Intent(MainActivity.this,BActivity.class);
new Intent(MainActivity.this,CActivity.class);
通过两种不同的Intent来发起请求。
二、指定action,通过Intent-Filter中的action标签查找Activity类
在xml中先这样定义:
- <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>
- </activity>
- <activity
- android:name=".BActivity"
- android:label="@string/title_activity_main"
- android:launchMode="singleTask" >
- <intent-filter>
- <action android:name="com.h3c.intent.ACTION_VIEW"></action>
- <category android:name="android.intent.category.DEFAULT"></category>
- </intent-filter>
- </activity>
- <activity
- android:name=".CActivity"
- android:label="@string/title_activity_main" >
- <intent-filter>
- <action android:name="com.h3c.intent.ACTION_VIEW"></action>
- <category android:name="android.intent.category.DEFAULT"></category>
- </intent-filter>
- </activity>
new Intent("com.h3c.intent.ACTION_VIEW");
此时就会弹出一个Dialog让我们自动选择是使用BActivity还是使用CActiviy了,就如前文我提到camer360的那个例子
这也就是隐式intent,即发送一种类型的action,可以让所有支持该类型的activity都收到消息,然后由用户选择使用哪个activity处理。
===========================================================================================================
隐式Intent
实例二:(Android分享与接收分享)
隐式Intent将跳转消息交给系统后台,系统找到系统中支持隐式Intent的组件,然后跳转:- public static void shareText(Context context, String title, String text) {
- Intent intent = new Intent(Intent.ACTION_SEND);
- intent.setType("text/plain");
- intent.putExtra(Intent.EXTRA_SUBJECT, title);
- intent.putExtra(Intent.EXTRA_TEXT, text);
- context.startActivity(Intent.createChooser(intent, title));
- }
我们再看如何支持分享,定义可以支持隐式Intent的组件:
- <activity android:name=".SharePage" android:label="分享到微博">
- <intent-filter>
- <action android:name="android.intent.action.SEND" />
- <category android:name="android.intent.category.DEFAULT" />
- <data android:mimeType="image/*" />
- </intent-filter>
- </activity>
- <category android:name="android.intent.category.DEFAULT"/>
- Android Intent-Filter中的action
- Android:Intent Filter 和 action 简介
- AndroidManifest Intent-Filter Action android:name属性
- (转)Android:Intent Filter 和 action 简介
- Android中的Intent filter使用
- Android 中的 Intent 与 Intent Filter
- android中的Intent和intent filter
- Android中的Intent和Intent-filter总结
- Android中的Intent和Intent-filter总结
- Android 中的Intent Action 一览表
- Android开发——Intent.Action(常见intent中的action)
- intent-filter中的三个子选项的使用 action----intent-filter-------------data的说明
- androidmanifest.xml中的activity/intent-filter/action/category
- intent-filter中的action与category常量表
- Android intent intent-filter
- Android intent intent-filter
- Android intent intent-filter
- Android 中的android.intent.action.send
- OpenVPN下载、安装、配置及使用详解
- C#类的理解
- 用presentingViewController实现左右切换视图
- 数据库基线
- 针对cocos2d图片资源自定义加密的解密
- Android Intent-Filter中的action
- PowerDesigner列名、注释内容互换
- gcc编译静态库和动态库
- Objective-C NSString字符串操作总结
- OC基础:类和对象
- SDL显示一张图片
- 使用运行快速启动程序----整理桌面的小技巧
- 2015百度之星资格赛1005
- java实现将文件内容导入到数据库中