Intent的属性以及intent的配置使用
Intent代表了Android应用的启动“意图”,包括启动app内部Activity和启动外部Activity。
Intent通过可以设置Action,data(Uri),component,class来启动指定的Activity;
<activity android:name="ShareActivity"> <intent-filter> <action android:name="android.intent.action.SEND"/> <category android:name="android.intent.category.DEFAULT"/> <data android:mimeType="text/plain"/> <data android:mimeType="image/*"/> </intent-filter> </activity>intent-filter顾名思义就是intent筛选器,通过设置action、category、data筛选特定的activity,被找到或者找到;
action和category就是一个字符串;
data可以设置多种值,包括数据类型和URI;
URI由3部分组成,Scheme(协议)、host和port(域名)、path(资源路径),Android固定的Scheme是content://;api提供了字符串转Uri的工具Uri.parse(Stri),str可以是普通的字符串,如:
Uri number = Uri.parse("tel:5551234");
Intent callIntent = new Intent(Intent.ACTION_DIAL, number);
Uri webpage = Uri.parse("http://www.android.com");
Intent webIntent = new Intent(Intent.ACTION_VIEW, webpage);
Android Api中建议调用外部Activiy时先做一个校验:
// Build the intent
Uri location = Uri.parse("geo:0,0?q=1600+Amphitheatre+Parkway,+Mountain+View,+California");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, location);
// Verify it resolves
PackageManager packageManager = ;
List<ResolveInfo> activities = packageManager.queryIntentActivities(mapIntent, 0);
boolean isIntentSafe = activities.size() > 0;
// Start an activity if its safe
if (isIntentSafe) {
startActivity(mapIntent);
}
