一、如何实现Activity页面跳转?
1、Intent intent=new Intent(this,BActivity.class);
startActivity(intent);
2、Intent intent2=new Intent();
intent2.setClass(MainActivity.this, BActivity.class);
startActivity(intent2);
三、Intent启动不同组件的方法:
1、启动Activity:
startActivity() 、startActivtyForResult()
2、启动Service
ComponetName startService()
boolean bindService()
3、启动BroadcastReceiver:sendBroadcast()、sendOrderedBroadcast ()、sendStickyBroadcast()、sendStickyOrderedBroadcast()
四、 Intent对象大致包括7大属性:ComponentName、 Action 、 Category 、 Data 、Type、 Extra 、Flag。
1、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);
2、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) 让用户选择数据,并返回所选数据。
3、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);
4、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://"); // 浏览器
Uri uri2=Uri.parse("geo:39.899533,116.036476"); // 打开地图定位
Intent intent=new Intent();
intent.setAction(intent.ACTION_VIEW);
intent.setData(uri2);
startActivity(intent);
5、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);
6、Extra属性:
1、通过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);
}
7、Flags属性:Intent可调用addFlags()方法来为Intent添加控制标记
1、FLAG_ACTIVITY_CLEAR_TOP:(效果同Activity LaunchMode的singleTask)
如果在栈中已经有该Activity的实例,就重用该实例。重用时,会让该实例回到栈顶,因此在它上面的实例将会被移除栈。如果栈中
不存在该实例,将会创建新的实例放入栈中。
2、FLAG_ACTIVITY_SINGLE_TOP:(效果同Activity LaunchMode的singleTop)
如果在任务的栈顶正好存在该Activity的实例, 就重用该实例,而不会创建新的Activity对象。
3、FLAG_ACTIVITY_NEW_TASK: (效果类似Activity LaunchMode的singleInstance)
8、android:launchMode四种属性
="standard",每一次都会new一个Activity,hashcode会改变,getTaskId()不变
=" singleTop“如果在栈顶,返回时则不用new一个Activity,直接调用原来的 , 但是如果没在栈顶,尽管栈中有也会新new一个Activity,getTaskId()
不变
="singleTask”跟 singleTop的区别是,如果栈中已存在实例,会把实例放在 栈顶,同时 singleTask会把前面的Activity清除掉,再 按返回
键时,会回到 手机桌面,getTaskId()也没变
="singleInstance"如果当前窗口没有该Activity实例,就会创建一个新的栈,把实例放进去,如果再重用它,不会再创建,并且TaskId会改变,即
只能new一次
一、如何实现Activity页面跳转?
1、Intent intent=new Intent(this,BActivity.class);
startActivity(intent);
2、Intent intent2=new Intent();
intent2.setClass(MainActivity.this, BActivity.class);
startActivity(intent2);
三、Intent启动不同组件的方法:
1、启动Activity:
startActivity() 、startActivtyForResult()
2、启动Service
ComponetName startService()
boolean bindService()
3、启动BroadcastReceiver:sendBroadcast()、sendOrderedBroadcast ()、sendStickyBroadcast()、sendStickyOrderedBroadcast()
四、 Intent对象大致包括7大属性:ComponentName、 Action 、 Category 、 Data 、Type、 Extra 、Flag。
1、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);
2、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) 让用户选择数据,并返回所选数据。
3、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);
4、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://"); // 浏览器
Uri uri2=Uri.parse("geo:39.899533,116.036476"); // 打开地图定位
Intent intent=new Intent();
intent.setAction(intent.ACTION_VIEW);
intent.setData(uri2);
startActivity(intent);
5、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);
6、Extra属性:
1、通过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);
}
7、Flags属性:Intent可调用addFlags()方法来为Intent添加控制标记
1、FLAG_ACTIVITY_CLEAR_TOP:(效果同Activity LaunchMode的singleTask)
如果在栈中已经有该Activity的实例,就重用该实例。重用时,会让该实例回到栈顶,因此在它上面的实例将会被移除栈。如果栈中
不存在该实例,将会创建新的实例放入栈中。
2、FLAG_ACTIVITY_SINGLE_TOP:(效果同Activity LaunchMode的singleTop)
如果在任务的栈顶正好存在该Activity的实例, 就重用该实例,而不会创建新的Activity对象。
3、FLAG_ACTIVITY_NEW_TASK: (效果类似Activity LaunchMode的singleInstance)
8、android:launchMode四种属性
="standard",每一次都会new一个Activity,hashcode会改变,getTaskId()不变
=" singleTop“如果在栈顶,返回时则不用new一个Activity,直接调用原来的 , 但是如果没在栈顶,尽管栈中有也会新new一个Activity,getTaskId()
不变
="singleTask”跟 singleTop的区别是,如果栈中已存在实例,会把实例放在 栈顶,同时 singleTask会把前面的Activity清除掉,再 按返回
键时,会回到 手机桌面,getTaskId()也没变
="singleInstance"如果当前窗口没有该Activity实例,就会创建一个新的栈,把实例放进去,如果再重用它,不会再创建,并且TaskId会改变,即
只能new一次
















