Intent的属性以及intent的配置使用

来源:互联网 发布:欧洲自由行攻略 知乎 编辑:程序博客网 时间:2024/05/02 16:35

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 intentUri location = Uri.parse("geo:0,0?q=1600+Amphitheatre+Parkway,+Mountain+View,+California");Intent mapIntent = new Intent(Intent.ACTION_VIEW, location);// Verify it resolvesPackageManager packageManager = getPackageManager();List<ResolveInfo> activities = packageManager.queryIntentActivities(mapIntent, 0);boolean isIntentSafe = activities.size() > 0;// Start an activity if it's safeif (isIntentSafe) {    startActivity(mapIntent);}


0 0
原创粉丝点击