您的位置:首页 > 其它

intent显示意图和隐式意图

2014-06-29 22:14 225 查看
package cn.itcast.mutileactivity;

import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;

public class Demo1Activity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}

//Action:如Intent指明定了Action,则目标组件IntentFilter的Action列表中就必须 包含 这个Action,否则不能匹配。 有manifest文件的一个action就行
// Category:在intent对象中出现的Category属性在IntentFilter中必须 出现 ,否则不能通过测试。 有manifest文件的一个category就行
//只要有 一组 数据符合匹配规则,就能找到组件.
//如果配值设置了data,iintent必须设置.
// ”android.intent.category.DEFAULT“属性是启动Activity默认属性,这个必须 添加 ,否则Category测试失败。
// Data:Data是Android要访问的数据和Action和Category声明方式一致。
public void open(View view){
//点击桌面的图标按钮,就是启动某个activity.
// intent 意图 , 描述一个动作, 激活一个组件
/* 第一种写法
* Intent intent = new Intent();
intent.setClassName("cn.itcast.mutileactivity", "cn.itcast.mutileactivity.Demo2Activity");*/
// 第二种写法
// Intent intent = new Intent(this,Demo2Activity.class);
/*
*第三种写法
Intent intent = new Intent();
ComponentName component = new ComponentName("cn.itcast.mutileactivity", "cn.itcast.mutileactivity.Demo2Activity");
intent.setComponent(component);
*/
//前面的三种写法 要求必须要知道 被激活的组件的包名和 class的名字
//显示意图
//****************************************************
// Intent intent = new Intent();
// intent.setAction("cn.itcast.mutileactivity.xxx");
// intent.addCategory("android.xxx");
// intent.setData(Uri.parse("itcast://cn.itcast.demo"));
//intent.setType(type); // mime 数据类型 image/jpeg
// 隐式意图
// 只需要指定 intent的动作 ,intent的数据
// 如果我们想激活另外一个应用程序的组件
//找到系统中的图库 我们可以选择一张图片 action和type可以一起.
// Intent intent = new Intent();
// intent.setAction(Intent.ACTION_PICK);
//
// intent.setType("image/jpeg");

// intent 要去做一件事 泡 动作 ......泡茶. 泡咖啡 泡妞 打人 打酱油
//只有action是不行的.
// intent.setData();
//指定数据的类型 data数据是有type.
// intent.addCategory();
// <category android:name="android.intent.category.DEFAULT" />必须要有category..在隐式意图下,只有action不行的,要操作的activity必须要有category和action.
//不然无法激活.
//action可以和data一起
//actin可以和type一起
//action可以和category一起
/**
* <intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="vnd.android-dir/mms-sms" />
</intent-filter>
*/

/* Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.addCategory("android.intent.category.DEFAULT");
intent.setType("vnd.android-dir/mms-sms");*/
/**
* <intent-filter>
<action android:name="android.intent.action.VIEW" />
<action android:name="android.intent.action.SENDTO" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="sms" />
<data android:scheme="smsto" />
</intent-filter>
*/

Intent intent = new Intent();
intent.setAction("android.intent.action.SENDTO");
intent.addCategory("android.intent.category.DEFAULT");
intent.setData(Uri.parse("smsto:123456"));
startActivity(intent);
}
}

//在主线程中不可以执行耗时的操作.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: