Android Intent应用

来源:互联网 发布:训练眼睛的软件 编辑:程序博客网 时间:2024/06/06 17:40

Android Intent应用

Intent主要用于应用程序内部的activity, service和broadcast receiver之间的交互。

1、Intent的属性

(1) action属性,用来表现意图的行动
一个Intent Filter可以包含多个action,表示该activity能接受的动作。启动Activity的action值为android.intent.action.MAIN。
(2) category属性,用来表现动作的类别
一个Intent Filter可以包含多个category,如果没有指定category,必须使用默认的android.intent.category.DEFAULT。启动Activity的category值为android.intent.category.LAUNCHER
(3) data属性,用来表示动作要操纵的数据

data属性的值是个Uri对象。系统内置的几个Data属性常量
  • tel,号码数据格式,后跟电话号码。
  • mailto,邮件数据格式,后跟邮件收件人地址。
  • smsto,短息数据格式,后跟短信接收号码。
  • content,内容数据格式,后跟需要读取的内容。
  • file,文件数据格式,后跟文件路径。
(4) type属性,用来对于data范例的描写
type属性时mime类型,常见type类型有
  • text/html,网页
  • text/plain,普通文本
  • image/*,图片文件
  • video/*,视频文件
  • audio/*,音频文件
  • application/vnd.android.package-archive,安卓Apk

2、Intent调用

(1) 显示调用Intent
在AndroidManifest.xml文件中定义一个新的Activity

<activityandroid:name=".IntentActivity"><intent-filter><action android:name="com.blog.demo.action.intent" /><category android:name="android.intent.category.DEFAULT" /></intent-filter></activity>
显式Intent就是知道要启动的组件名称,在Intent中明确的指定了这个组件。
Intent intent = new Intent(this, IntentActivity.class);startActivity(intent);
(2) 隐式调用Intent
隐式Intent不知道要启动的组件名称,只知道一个Intent动作要执行,系统会根据manifest file中的intent filter找匹配的组件。

Intent intent = new Intent("com.blog.demo.action.intent");startActivity(intent);
注意点就是Activity的Category包含一个默认的Category,android.intent.category.DEFAULT。
(3) 多activity定义同一action
多activity定义了相同的action,会弹出一个选择弹窗。或者调用Intent.createChooser

Intent targetIntent = new Intent("com.blog.demo.action.intent");Intent intent = Intent.createChooser(targetIntent, "选择");startActivity(targetIntent);
(4) 多category
<activityandroid:name=".component.IntentActivity"><intent-filter><action android:name="com.blog.demo.action.intent" /><category android:name="android.intent.category.DEFAULT" /><category android:name="com.blog.demo.MY_CATREORY" /></intent-filter></activity>
如果在activity定义了多个category,可以在intent中指定
Intent intent = new Intent(this, IntentActivity.class);intent.addCategory("com.blog.demo.MY_CATREORY");startActivity(intent);

3、Intent值传递

调用Intent.putExtra方法传递值,在新的activity调用getIntent().getXXXExtra方法获取。

4、启动Activity的方式

一种是直接使用startActivity,另外一种就是使用startActivityForResult。
startActivityForResult的主要作用就是可以回传数据。requestCode是一个常量,用于区分回调的来源。

startActivityForResult(Intent intent, int requestCode)
onActivityResult的主要作用就是来处理回调数据,其中requestCode是请求时的参数,resultCode和data是新Activity中返回的值。
protected void onActivityResult(int requestCode, int resultCode, Intent data)
在新Activity中使用setResult来返回数据,如果没有调用setResult方法,resultCode返回RESULT_CANCELED,data为空。
setResult(int resultCode)setResult(int resultCode, Intent data)

5、常用Intent

(1) 返回Home界面
Intent intent = new Intent(Intent.ACTION_MAIN);intent.addCategory(Intent.CATEGORY_HOME);startActivity(intent);
(2) 进入拨号界面,显示号码10086
Intent intent = new Intent(Intent.ACTION_DIAL);intent.setData(Uri.parse("tel:10086"));startActivity(intent);
(3) 拨打电话,需要添加权限android.permission.CALL_PHONE
Intent intent = new Intent(Intent.ACTION_CALL);intent.setData(Uri.parse("tel:10086"));startActivity(intent);
(4) 打开网页
Intent intent = new Intent(Intent.ACTION_VIEW);intent.setData(Uri.parse("http://www.baidu.com"));startActivity(intent);
(5) 拍照
String outputFile = Environment.getExternalStorageDirectory().getAbsolutePath() + "/phone.jpg";Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(outputFile))); // 指定输出文件startActivityForResult(intent, REQUEST_CODE_PHOTO);
(6) 获取图片
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);intent.setType("image/*");startActivityForResult(intent, REQUEST_CODE_PICTURE);
成功后在onActivityResult中调用
Bundle bundle = data.getExtras();  Bitmap bitmap = (Bitmap) bundle.get("data");
(7) 安装apk
Intent intent = new Intent(Intent.ACTION_VIEW);Uri data = Uri.fromFile(new File("xxx.apk"));intent.setDataAndType(data, "application/vnd.android.package-archive");startActivity(intent);

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 mengma 猛玛象 猛马象 创造与魔法雪猛犸 创造与魔法雪猛犸位置 满洲里扎赉诺尔猛犸公园旅游 创造与魔法2018雪猛犸吃多少包 2018诸神的棋盘隐藏猛犸不出现 星际争霸战末世 重装猛犸 赏金猎人的试练低挂树无猛犸 2018诸神的棋盘隐藏怎么拿猛犸 猛狮科技 st猛狮 猛狮新能源 猛狮 猛狮科技股吧 猛狮科技股票怎么样 猛狮科技资金流向 猛狮科技股票 002684猛狮科技 猛师科技 002684 000860股票 600651股票 002514股票 002684股票 猛禽小队 猛禽f 猛禽f150 f150猛禽 猛禽f750 猛禽f650 猛禽大皮卡 猛禽战斗机 f650猛禽 猛禽f22 猛禽图片 ford猛禽 华硕猛禽 猛禽油耗 猛禽改装