Android intent的显示意图和隐式意图的区别
2017-02-11 22:27
501 查看
一:两种启动意图:
1.显示意图启动的两种方法:
}
2.隐式意图启动自己定义的activity的方式
}
3.隐式意图启动系统的activity的方式
}
4.注意:隐式意图必须全部匹配
}
4.1.mimeType也必须匹配 setData匹配的不是data标签而是scheme属性, setT
4000
ype匹配的是mimeType属性
5.隐式意图和显示意图的总结
###显式启动
* 指定上下文和目标Activity的字节码
* 用于启动同一应用的Activity
* 指定目标Activity所在的应用的包名和目标Activity的包名类名(然并卵)
* 用于启动不同应用的Activity
匹配:所有子节点要完全相同
intent-filter可以定义多个,任意匹配一个即可
多个action或者data任意匹配一个即可
setData匹配的是scheme
setType匹配的是mimeType
data标签只要有scheme,就必须匹配,同理只要有mimeType,就必须匹配
显式效率高于隐式,能用显式就用显式
启动不同应用的Activity,使用隐式
如果隐式intent与多个Activity的intent-filter匹配,那么会弹出对话框让用户选一个来启动
1.显示意图启动的两种方法:
//显示意图 public void click2(View v){ Intent intent = new Intent(); intent.setclass(this,SecondActivity); startActivity(intent); } //显示启动拨号器 public void click3(View v){ Intent intent = new Intent(); intent.setClassName("com.android.dialer","com.android.dialer.DialtactsActivity"); startActivity(intent);
}
2.隐式意图启动自己定义的activity的方式
<activity android:name="com.qwd.runactivity.SecondActivity"> <intent-filter> <action android:name="a.b.c"/> <category android:name="android.intent.category.DEFAULT"> <intent-filter> /activity> //隐式启动SecondActivity public void click4(View v){ Intent intent = new Intent(); intent.setAction("a.b.c"); startActivity(intent);
}
3.隐式意图启动系统的activity的方式
//隐式启动拨号器 public void click5(View v){ Intent intent = new Intent(); intent.setAction(Intent.ACTION_DIAL); startActivity(intent);
}
4.注意:隐式意图必须全部匹配
<activity android:name="com.qwd.runactivity.SecondActivity"> <intent-filter> <action android:name="a.b.c"/> <data android:scheme="qwd"/> <category android:name="android.intent.category.DEFAULT"> <intent-filter> </activity> //隐式启动SecondActivity public void click6(View v){ Intent intent = new Intent(); intent.setAction("a.b.c"); intent.setData(Uri.parse("qwd:abc")); //如果不匹配Category,那么系统会自动添加以下代码 //intent.addCategory(Intent.CATEGORY_DEFAULT); startActivity(intent);
}
4.1.mimeType也必须匹配 setData匹配的不是data标签而是scheme属性, setT
4000
ype匹配的是mimeType属性
5.隐式意图和显示意图的总结
###显式启动
* 指定上下文和目标Activity的字节码
* 用于启动同一应用的Activity
* 指定目标Activity所在的应用的包名和目标Activity的包名类名(然并卵)
* 用于启动不同应用的Activity
隐式启动
定义隐式intent,启动Activity时,系统会遍历所有清单文件,寻找是否存在与该intent匹配的intent-filter,如果有,则启动intent-filter对应的Activity,如果没有,则报错匹配:所有子节点要完全相同
intent-filter可以定义多个,任意匹配一个即可
多个action或者data任意匹配一个即可
setData匹配的是scheme
setType匹配的是mimeType
data标签只要有scheme,就必须匹配,同理只要有mimeType,就必须匹配
应用场景
启动同一个应用的Activity,使用显式显式效率高于隐式,能用显式就用显式
启动不同应用的Activity,使用隐式
如果隐式intent与多个Activity的intent-filter匹配,那么会弹出对话框让用户选一个来启动
相关文章推荐
- 关于Android intent的知识 隐式意图和显示意图
- Android 显示意图和隐式意图的区别
- Android学习记录(7)—Intent中显示意图和隐式意图的用法
- android intent 隐式意图和显示意图(activity跳转)
- android Intent (隐式意图和显示意图)
- Android学习记录(7)—Intent中显示意图和隐式意图的用法
- 关于Android intent的知识 隐式意图和显示意图
- Android Intent学习之 隐式意图& 显示意图& intent 跳转问题
- Android学习之Intent中显示意图和隐式意图的用法实例分析
- Android深入探究笔记之三 -- Intent (隐式意图和显示意图)
- Android深入探究笔记 -- Intent (隐式意图和显示意图)
- Android Intent中显示意图与隐式意图的基本用法
- android intent 隐式意图和显示意图(activity跳转)
- Android—显示Intent和隐式Intent的区别
- Android学习记录--Intent中显示意图和隐式意图的用法
- 【转】Android深入探究笔记之三 -- Intent (隐式意图和显示意图)
- Android 显示意图和隐式意图的区别
- Android 显示意图和隐式意图的区别
- android Intent (隐式意图和显示意图)
- Android开发学习笔记:浅谈显示Intent和隐式Intent