android中Activity的跳转和Intent七个属性简单记录(5)

1、如何实现Activity页面跳转?
		一、Intent intent=new Intent(this,BActivity.class);
		startActivity(intent);
 		二、Intent intent2=new Intent();
		intent2.setClass(MainActivity.this, BActivity.class);
		startActivity(intent2);

3、Intent启动不一样组件的方法:
     一、启动Activity:
         startActivity()  、startActivtyForResult()
     二、启动Service
       ComponetName startService()
       boolean bindService()
    三、启动BroadcastReceiver:sendBroadcast()、sendOrderedBroadcast ()、sendStickyBroadcast()、sendStickyOrderedBroadcast()

4、 Intent对象大体包括7大属性:ComponentName、 Action 、 Category 、 Data 、Type、 Extra 、Flag。
     一、ComponentName属性:意图分显性和隐性意图
       (1.1)、显性意图:
            Intent intent = new Intent();
           ComponentName cName = new ComponentName(MainActivity.this,NextActivity.class);
           intent.setComponent(cName);
          startActivity(intent);
         // 实际上,以上的写法都被简化为如下写法:
         Intent intent = new Intent(MainActivity.this,NextActivity.class);
         startActivity(intent);
      (1.2)、隐性意图:
                  Intent intent3=new Intent();
	ComponentName cname=new ComponentName("com.xxx.xxx","com.xxx.xxx.类名");
	//能够一个app跳到另外一个app两个参数的意义:第一个表示要跳转到APP的包名,第二个表示跳转到的APP的页面的类(class)
	 intent3.setComponent(cname);
	 startActivity(intent3);
      二、Action属性 :经常使用Action属性常量
     Intent对象不只能够启动本应用内的程序组件,也能够启动Android系统的其余应用的组件,包括系统内置的程序组件(须要设置权
    限)。
      ACTION_MAIN:(android.intent.action.MAIN)Android程序入口。
     每一个Android应用必须且只能包含一个此类型的Action声明。【若是设置多个,则哪一个在前,执行哪一个。】
     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_ANSWER: (android.intent.action.ANSWER) 接听来电。
    ACTION_SEND: (android.intent.action.SEND) 向其余人发送数据(例如:彩信/email)。
    ACTION_SENDTO: (android.intent.action.SENDTO) 向其余人发送短信。
    ACTION_SEARCH: (android.intent.action.SEARCH) 执行搜索。
   ACTION_GET_CONTENT: (android.intent.action.GET_CONTENT) 让用户选择数据,并返回所选数据。

   三、Category 属性:
    Category属性为Action增长额外的附加类别信息。CATEGORY_LAUNCHER意味着在加载程序的时候Acticity出如今最上面,而
    CATEGORY_HOME表示页面跳转到HOME界面。 
		Intent intent = new Intent();
		intent.setAction(intent.ACTION_MAIN);
		intent.addCategory(intent.CATEGORY_HOME);
		startActivity(intent);
  四、Data属性:Intent利用Action属性和Data属性启动Android系统内置组件的代码
                                 1 )Intent intent=new Intent();//打电话
		intent.setAction(intent.ACTION_CALL);
		//intent.setAction("android.intent.action.CALL"); 
		// 如下各项皆如此,都有两种写法。
		intent.setData(Uri.parse("tel:10086"));
		startActivity(intent);
                                  2)// 调用拨号面板
                                   Intent intent=new Intent();
		intent.setAction(intent.ACTION_DIAL);
		intent.setData(Uri.parse("tel:10086"));
		startActivity(intent);
		3)//利用 Uri 打开浏览器、打开地图等:
                                   //Uri uri = Uri.parse("http://www.google.com"); // 浏览器
		Uri uri2=Uri.parse("geo:39.899533,116.036476"); // 打开地图定位
		Intent intent=new Intent();
		intent.setAction(intent.ACTION_VIEW);
		intent.setData(uri2);
		startActivity(intent);

    五、Type属性:
    Type属性用于指定Data所指定的Uri对应的MIME类型。MIME只要符合“abc/xyz”这样的字符串格式便可。
     Intent利用Action、Data和Type属性启动Android系统内置组件的代码:  
		Intent intent=new Intent();
		Uri uri=Uri.parse("/mnt/sdcard/papa.mp4");
                                   //type同时存在时要像下面同样合并写在一块儿
		intent.setDataAndType(uri, "video/*");
		startActivity(intent);
    六、Extra属性:
     一、经过intent.putExtra(键, 值)的形式在多个Activity之间进行数据交换。
         Intent利用Action、Data和Type、Extra属性启动Android系统内置组件的代码:
        //发送短信的程序
	public void sms(View view){
		Intent intent=new Intent();
		intent.setAction(intent.ACTION_VIEW);
		intent.setType("vnd.android-dir/mms-sms");
		intent.putExtra("sms_body", "短信内容");
		startActivity(intent);
	}
	//发送短信
	public void send(View view){
		Uri uri=Uri.parse("smsto:10086");
		Intent intent=new Intent();
		intent.setAction(intent.ACTION_SENDTO);
		intent.setData(uri);
		intent.putExtra("sms_body", "短信内容");
		startActivity(intent);
	}
	// 发送彩信 , 设备会提示选择合适的程序发送
	public void sendcai(View view){
		Uri uri=Uri.parse("/mnt/sdcard/aaa.png");
		Intent intent = new Intent();
		intent.setAction(Intent. ACTION_SEND );
		intent.setType("image/png");
		intent.putExtra("sms_body", " 内容 ");
		intent.putExtra(Intent.EXTRA_STREAM, uri);
		startActivity(intent);
	}
      七、Flags属性:Intent可调用addFlags()方法来为Intent添加控制标记
        一、FLAG_ACTIVITY_CLEAR_TOP:(效果同Activity LaunchMode的singleTask)
   若是在栈中已经有该Activity的实例,就重用该实例。重用时,会让该实例回到栈顶,所以在它上面的实例将会被移除栈。若是栈中
   不存在该实例,将会建立新的实例放入栈中。
       二、FLAG_ACTIVITY_SINGLE_TOP:(效果同Activity LaunchMode的singleTop)
   若是在任务的栈顶正好存在该Activity的实例, 就重用该实例,而不会建立新的Activity对象。
       三、FLAG_ACTIVITY_NEW_TASK: (效果相似Activity LaunchMode的singleInstance)

八、android:launchMode四种属性
="standard",每一次都会new一个Activity,hashcode会改变,getTaskId()不变
=" singleTop“若是在栈顶,返回时则不用new一个Activity,直接调用原来的 , 可是若是没在栈顶,尽管栈中有也会新new一个Activity,getTaskId()

不变

="singleTask”跟 singleTop的区别是,若是栈中已存在实例,会把实例放在            栈顶,同时 singleTask会把前面的Activity清除掉,再   按返回

键时,会回到        手机桌面,getTaskId()也没变

="singleInstance"若是当前窗口没有该Activity实例,就会建立一个新的栈,把实例放进去,若是再重用它,不会再建立,而且TaskId会改变,即

只能new一次
相关文章
相关标签/搜索