天天看點

android中Intent的一些用法和總結

data屬性接受uri對象,通常包括兩個部分,例如:content://com.android.contaccts/contacts/1

content代表資料類型,是聯系人資訊。

:...冒号後面代表的是資料,标明id為1的聯系人資料

type屬性指定data要操作的資料類型,但是一般intent指定了action,data屬性之後,android會自動指定資料類型

使用intent的方法:

intent intent = new intent(action,uri)  

startactivity(intent);

或者

intent intent = new intent(action);

intent.setdataandtype(uri,string type);

如果需要對傳回的資料操作,可以不調用startactivity(intent)

可以用startactivityforresult(intent, 自定義資料辨別);

然後在onactivityresult()回調函數中進行操作。

比如調用拍照,然後傳回的照片在onactivityresult()中進行儲存或者圖檔處理操作。

附上一個調用系統照相功能的代碼,可以直接粘貼到工程中運作,得在真機中調試:

public class testmediaactivity extends activity { 

    /** called when the activity is first created. */ 

    @override 

    public void oncreate(bundle savedinstancestate) { 

        super.oncreate(savedinstancestate); 

        setcontentview(r.layout.main); 

        try { 

             intent intent = new intent(mediastore.action_image_capture); 

             startactivityforresult(intent, 0); 

        } catch (exception e) { 

            system.out.println(e.getmessage());

        } 

    }

    protected void onactivityresult(int requestcode, int resultcode, intent data) 

    { 

            if (requestcode != 0) { 

                return; 

            } 

            super.onactivityresult(requestcode, resultcode, data); 

            bundle extras = data.getextras(); 

            bitmap b = (bitmap) extras.get("data"); 

            /*

               得到圖檔對圖檔處理...

            */ 

            // todo: handle exception 

            system.out.println(e.getmessage()); 

    } 

}

// 給移動客服10086撥打電話

uri uri = uri.parse("tel:10086");

intent intent = new intent(intent.action_dial, uri);

// 給10086發送内容為“hello”的短信

uri uri = uri.parse("smsto:10086");

intent intent = new intent(intent.action_sendto, uri);

intent.putextra("sms_body", "hello");

// 發送彩信(相當于發送帶附件的短信)

intent intent = new intent(intent.action_send);

uri uri = uri.parse("content://media/external/images/media/23");

intent.putextra(intent.extra_stream, uri);

intent.settype("image/png");

// 打開google首頁

uri uri = uri.parse("http://www.google.com");

intent intent  = new intent(intent.action_view, uri);

// 給[email protected]發郵件

uri uri = uri.parse("mailto:[email protected]");

// 給[email protected]發郵件發送内容為“hello”的郵件

intent.putextra(intent.extra_email, "[email protected]");

intent.putextra(intent.extra_subject, "subject");

intent.putextra(intent.extra_text, "hello");

intent.settype("text/plain");

// 給多人發郵件

intent intent=new intent(intent.action_send);

string[] tos = {"[email protected]", "[email protected]"}; // 收件人

string[] ccs = {"[email protected]", "[email protected]"}; // 抄送

string[] bccs = {"[email protected]", "[email protected]"}; // 密送

intent.putextra(intent.extra_email, tos);

intent.putextra(intent.extra_cc, ccs);

intent.putextra(intent.extra_bcc, bccs);

intent.settype("message/rfc822");

// 打開google地圖中國北京位置(北緯39.9,東經116.3)

uri uri = uri.parse("geo:39.9,116.3");

intent intent = new intent(intent.action_view, uri);

// 路徑規劃:從北京某地(北緯39.9,東經116.3)到上海某地(北緯31.2,東經121.4)

uri uri = uri.parse("http://maps.google.com/maps?f=d&saddr=39.9 116.3&daddr=31.2 121.4");

intent intent = new intent(intent.action_view);

uri uri = uri.parse("file:///sdcard/foo.mp3");

intent.setdataandtype(uri, "audio/mp3");

uri uri = uri.withappendedpath(mediastore.audio.media.internal_content_uri, "1");

// 打開拍照程式

intent intent = new intent(mediastore.action_image_capture); 

startactivityforresult(intent, 0);

// 取出照片資料

bundle extras = intent.getextras(); 

bitmap bitmap = (bitmap) extras.get("data"); 

// 擷取并剪切圖檔

intent intent = new intent(intent.action_get_content);

intent.settype("image/*");

intent.putextra("crop", "true"); // 開啟剪切

intent.putextra("aspectx", 1); // 剪切的寬高比為1:2

intent.putextra("aspecty", 2);

intent.putextra("outputx", 20); // 儲存圖檔的寬和高

intent.putextra("outputy", 40); 

intent.putextra("output", uri.fromfile(new file("/mnt/sdcard/temp"))); // 儲存路徑

intent.putextra("outputformat", "jpeg");// 傳回格式

// 剪切特定圖檔

intent intent = new intent("com.android.camera.action.crop"); 

intent.setclassname("com.android.camera", "com.android.camera.cropimage"); 

intent.setdata(uri.fromfile(new file("/mnt/sdcard/temp"))); 

intent.putextra("outputx", 1); // 剪切的寬高比為1:2

intent.putextra("outputy", 2);

intent.putextra("aspectx", 20); // 儲存圖檔的寬和高

intent.putextra("aspecty", 40);

intent.putextra("scale", true);

intent.putextra("nofacedetection", true); 

intent.putextra("output", uri.parse("file:///mnt/sdcard/temp")); 

startactivityforresult(intent, 0); 

// 打開google market直接進入該程式的詳細頁面

uri uri = uri.parse("market://details?id=" + "com.demo.app");

uri uri = uri.fromparts("package", "com.demo.app", null);  

intent intent = new intent(intent.action_delete, uri);  

startactivity(intent); 

// 進入無線網絡設定界面(其它可以舉一反三)  

intent intent = new intent(android.provider.settings.action_wireless_settings);  

繼續閱讀