android学习之Intent隐式意图

来源:互联网 发布:java国家精品课程 编辑:程序博客网 时间:2024/04/30 14:04

隐式意图采用action动作,category类别和数据uri来匹配,示例代码如下:

activity1采用隐式意图转向activity2

首先要在activity2的manifest配置文件中对他的intent-filter进行配置,如果activity1的intent符合他的过滤条件则跳转

配置文件如下

 <activity android:name="com.Activity2" android:label="@string/window_title">
            
            <intent-filter>
                <!-类别的名称可以随便起,最好有意义,我看其他的都是用的包名  android.intent.category.DEFAULT是方法内部加的,必须注册上,type和

data都有的话,activity1要采用setDataAndType来设置data和type,setType会把前面的设置清理掉->
                <action android:name="com.other"/>
                <category android:name="com.it"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <data android:scheme="zhenhua" android:host="www.zhenhua.com"/>
                <data android:mimeType="image/*"></data>
            </intent-filter>
        </activity>

actiity1的代码如下:

public class Activity1 extends Activity {
    Button btDirect;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btDirect = (Button) findViewById(R.id.btDirect);
    }
    
    public void openActivity(View view){
        /**
         * 只要Intent中的Action和Category都出现在Intent-Filter中就能匹配到
         */
        Intent intent = new Intent();//隐式意图激活Activity
        intent.setAction("com.zhenhua.other");
        intent.addCategory("com.zhenhua.it");//方法内部为Intent添加了android.intent.category.DEFAULT类别
        //intent.setData(Uri.parse("zhenhua://www.zhenhua.com"));
        //intent.setType("image/jpg");
        intent.setDataAndType(Uri.parse("zhenhua://www.zhenhua.com"),"image/jpg");
        startActivity(intent);
    }

}

Activtiy2的代码如下:

public class Activity2 extends Activity {
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.other_activity);
    }
}


下面附几个常用的调用:

1、调用拨号:

// 调用系统自带拨号器设置拨号意图对象   

    Intent intent = new Intent();  
    intent.setAction("android.intent.action.CALL");  
    intent.setData(Uri.parse("tel:" + phone));  
  
    // 激活意图,方法内部会自动为Intent添加类别android.intent.category.DEFAULT   
    startActivity(intent); 
2、调用发短信

Uri uri = Uri.parse("smsto:10010");           

Intent it = new Intent(Intent.ACTION_SENDTO, uri);           

it.putExtra("sms_body""102");           

activity.startActivity(it);