关闭

Intent七大属性

131人阅读 评论(0) 收藏 举报
分类:

1, Intent的作用

        包装Android的组件

        启动Activity, 启动服务, 发送广播

        组件之间的传值

 2, Intent
  "显示"意图

 明确指定了要跳转的Activity  (通常用于应用程序内容组件的跳转)

  "隐式"意图

 不明确指定要跳转的Activity ,而是通过Intent来描述动作(跨应用程序之间的跳转)

   3, "显示"意图

         写法一:

            Intent intent = new Intent(MainActivity.this,InfoActivity.class);

            startActivity(intent);
          写法二:

            Intent intent = new Intent();

            intent.setClass(MainActivity.this,InfoActivity.class);

            startActivity(intent);

          写法三:

             ComponentName  包装android的组件(用于指定启动的组件)

             Intent intent = new Intent();

             ComponentName cName = new ComponentName(MainActivity.this,InfoActivity.class);

             intent.setComponent(cName);

             startActivity(intent);


    4, "隐式"意图

        action   表示要启动的Activity想要完成什么动作. 经常用在隐式意图中

             注意:   必须保证action在应用单中唯一性

             ACTION_MAIN (android:intent.action.MAIN)  : Android程序入口

             ACTION_VIEW  (android:intent.action.VIEW) : 显示指定的数据

             ACTION_EDIT  (android:intent.action.EDIT) : 编辑指定的数据

             ACTION_DIAL  (android:intent.action.DIAL) : 显示拨号面板界面

             ACTION_CALL  (android:intent.action.CALL) :  直接呼叫data中所携带的电话号码

             ACTION_SEND   (android:intent.action.SEND):  向其他人发送数据(彩信, email)

             ACTION_SENDTO  (android:intent.action.SENDTO) : 向其他人发生短信


    category:  为Action增加附加类别的信息

            android.intent.category.LAUNCHER   程序入口, 优先级最高

            android.intent.category.DEFAULT    默认的, 普通的Activity

        A应用(启动者)

             Intent intent = new Intent();

             intent.setAction("com.example.day_lanuchmode.B");//必须要和被启动的action一致

             startActivity(intent);    

        B应用(被启动者)  需要一个唯一的动作(action)

            在清单文件中, <activity/> 标签中, 指定 action + category
             <intent-filter>        

              <action  android:name="com.example.day_lanuchmode.B"/>                

            <category android:name="android.intent.category.DEFAULT"/>            

            </intent-filter>
 data:  指定action后, 将必要的数据放入data中


         比如:   拨打电话:  必须要有电话号码

         打开网页:   必须要有网址

         URI :   统一资源标识符(不同数据有不同的格式)

         拨打电话:  tel:110119120

         网址:      http://baidu.com

         发送短信:  smsto:10086

         地图上显示经纬度:geo://lantitude,lontitude

         文件数据格式:file://

 type: 如果data属性为文件的路径, 那么需要通过type来指定类型
        比如:
            文本    text/*
            图片    image/*
            视频    video/*
            音频    audio/*

Extra :保存额外的数据
Type: 属性用于指定Data所指定的Uri对应的MIME类型
Flag:
    intent.setFlags(.....);
    Intent.FLAG_ACTIVITY_SINGLE_TOP   等同于属性中的singleTop
    Intent.FLAG_ACTIVITY_CLEAR_TOP
     同sigleTask 相似, 当栈中不存在时创建; 如果存在那么会把它以及之上的所有实例移除,并且销毁.  创建一个新的实例放入栈的顶端
    Intent.FLAG_ACTIVITY_NEW_TASK
    必须要在清单文件的<activity/>标签中增加属性:
     android:taskAffinity="com.other"
     android:alwaysRetainTaskState="true"
     只有增加了这两个属性, 系统才会为当前的实例创建新的任务, 并且放到栈的底部, 否则等同于没有设置。
public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}

	public void clickButton(View v) {
		Intent intent = new Intent();
		switch (v.getId()) {

		case R.id.button_01:
			// 显示启动1
			intent = new Intent(this, InfoActivity.class);
			break;
		case R.id.button_02:
			// 显示启动2
			intent.setClass(this, InfoActivity.class);
			break;
		case R.id.button_03:
			ComponentName componentName = new ComponentName(this,
					InfoActivity.class);
			// 设置Android包装的组件
			intent.setComponent(componentName);
			break;
		case R.id.button_04:
			intent.setAction("com.example.day_lanuchmode.B");
			break;
		case R.id.button_05:
			// 指定Intent的动作
			intent.setAction(Intent.ACTION_VIEW);
			// 指定必要的数据
			intent.setData(Uri.parse("http://baidu.com"));
			break;
		case R.id.button_06:
			intent.setAction(Intent.ACTION_VIEW);
			intent.setDataAndType(Uri.parse("file://storage/sdcard/lf.jpg"),
				"image/*");
			break;
		case R.id.button_07:
			intent.setAction(Intent.ACTION_VIEW);
			intent.setDataAndType(Uri.parse("file://storage/sdcard/123.txt"),
					"text/*");
			break;
		case R.id.button_08:
			intent.setAction(Intent.ACTION_VIEW);
			intent.setDataAndType(Uri.parse("file://storage/sdcard/movei.mp4"),
					"video/*");
			break;
		case R.id.button_09:
			intent.setAction(Intent.ACTION_VIEW);
			intent.setDataAndType(Uri.parse("file://storage/sdcard/wlxq.mp3"),
					"audio/*");

			break;
		case R.id.button_10:
			intent.setAction(Intent.ACTION_SENDTO);
			intent.setData(Uri.parse("smsto:110"));
			intent.putExtra("sms_body", "为了更好的学习, 咱们分手吧!!!");
			break;
		}
		startActivity(intent);
	}
}




0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:98449次
    • 积分:1945
    • 等级:
    • 排名:千里之外
    • 原创:114篇
    • 转载:27篇
    • 译文:0篇
    • 评论:13条
    最新评论