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一次