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);