android 中 intent 是經常要用到的DEMO以及Intent 調用說明

android 中 intent 是經常要用到的。不管是頁面牽轉,還是傳遞數據,或是調用外部程序,系統功能都要用到 intent。

1.從 google 搜索內容

Intent intent = new Intent();
intent.setAction(Intent.ACTION_WEB_SEARCH);
intent.putExtra(SearchManager.QUERY,"searchString")
startActivity(intent);


2.瀏覽網頁

Uri uri = Uri.parse("http://www.google.com");
Intent it = new Intent(Intent.ACTION_VIEW,uri);
startActivity(it);


3.顯示地圖

Uri uri = Uri.parse("geo:38.899533,-77.036476");
Intent it = new Intent(Intent.Action_VIEW,uri);
startActivity(it);


4.路徑規劃

Uri uri = Uri.parse("http://maps.google.com/maps?f=dsaddr=startLat%20startLng&daddr=endLat
%20endLng&hl=en");
Intent it = new Intent(Intent.ACTION_VIEW,URI);
startActivity(it);


5.撥打電話

Uri uri = Uri.parse("tel:xxxxxx");
Intent it = new Intent(Intent.ACTION_DIAL, uri);
startActivity(it);


6.調用發短信的程序

Intent it = new Intent(Intent.ACTION_VIEW);
it.putExtra("sms_body", "The SMS text");
it.setType("vnd.android-dir/mms-sms");
startActivity(it);


7.發送短信

Uri uri = Uri.parse("smsto:0800000123");
Intent it = new Intent(Intent.ACTION_SENDTO, uri);
it.putExtra("sms_body", "The SMS text");
startActivity(it);
String body="this is sms demo";
Intent mmsintent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("smsto", number, null));
mmsintent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_BODY, body);
mmsintent.putExtra(Messaging.KEY_ACTION_SENDTO_COMPOSE_MODE, true);
mmsintent.putExtra(Messaging.KEY_ACTION_SENDTO_EXIT_ON_SENT, true);
startActivity(mmsintent);


8.發送彩信

Uri uri = Uri.parse("content://media/external/images/media/23");
Intent it = new Intent(Intent.ACTION_SEND);
it.putExtra("sms_body", "some text");
it.putExtra(Intent.EXTRA_STREAM, uri);
it.setType("image/png");
startActivity(it);
StringBuilder sb = new StringBuilder();
sb.append("file://");
sb.append(fd.getAbsoluteFile());
Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mmsto", number, null));
// Below extra datas are all optional.
intent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_SUBJECT, subject);
intent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_BODY, body);
intent.putExtra(Messaging.KEY_ACTION_SENDTO_CONTENT_URI, sb.toString());
intent.putExtra(Messaging.KEY_ACTION_SENDTO_COMPOSE_MODE, composeMode);
intent.putExtra(Messaging.KEY_ACTION_SENDTO_EXIT_ON_SENT, exitOnSent);
startActivity(intent);


9.發送 Email

Uri uri = Uri.parse("mailto:[email protected]");
Intent it = new Intent(Intent.ACTION_SENDTO, uri);
startActivity(it);
Intent it = new Intent(Intent.ACTION_SEND);
it.putExtra(Intent.EXTRA_EMAIL, "[email protected]");
it.putExtra(Intent.EXTRA_TEXT, "The email body text");
it.setType("text/plain");
startActivity(Intent.createChooser(it, "Choose Email Client"));
Intent it=new Intent(Intent.ACTION_SEND);
String[] tos={"[email protected]"};
String[] ccs={"[email protected]"};
it.putExtra(Intent.EXTRA_EMAIL, tos);
it.putExtra(Intent.EXTRA_CC, ccs);
it.putExtra(Intent.EXTRA_TEXT, "The email body text");
it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");
it.setType("message/rfc822");
startActivity(Intent.createChooser(it, "Choose Email Client"));
Intent it = new Intent(Intent.ACTION_SEND);
it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");
it.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/mysong.mp3");
sendIntent.setType("audio/mp3");
startActivity(Intent.createChooser(it, "Choose Email Client"));


10.播放多媒體

Intent it = new Intent(Intent.ACTION_VIEW);
Uri uri = Uri.parse("file:///sdcard/song.mp3");
it.setDataAndType(uri, "audio/mp3");
startActivity(it);
Uri uri = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI, "1");
Intent it = new Intent(Intent.ACTION_VIEW, uri);
startActivity(it);


11.uninstall apk

Uri uri = Uri.fromParts("package", strPackageName, null);
Intent it = new Intent(Intent.ACTION_DELETE, uri);
startActivity(it);


12.install apk

Uri installUri = Uri.fromParts("package", "xxx", null);
returnIt = new Intent(Intent.ACTION_PACKAGE_ADDED, installUri);


13. 打開照相機

<1>Intent i = new Intent(Intent.ACTION_CAMERA_BUTTON, null);
this.sendBroadcast(i);
<2>long dateTaken = System.currentTimeMillis();
String name = createName(dateTaken) + ".jpg";
fileName = folder + name;
ContentValues values = new ContentValues();
values.put(Images.Media.TITLE, fileName);
values.put("_data", fileName);
values.put(Images.Media.PICASA_ID, fileName);
values.put(Images.Media.DISPLAY_NAME, fileName);
values.put(Images.Media.DESCRIPTION, fileName);
values.put(Images.ImageColumns.BUCKET_DISPLAY_NAME, fileName);
Uri photoUri = getContentResolver().insert(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
Intent inttPhoto = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
inttPhoto.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
startActivityForResult(inttPhoto, 10);


14.從 gallery 選取圖片

Intent i = new Intent();
i.setType("image/*");
i.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(i, 11);


15. 打開錄音機

Intent mi = new Intent(Media.RECORD_SOUND_ACTION);
startActivity(mi);


16.顯示應用詳細列表

Uri uri = Uri.parse("market://details?id=app_id");
Intent it = new Intent(Intent.ACTION_VIEW, uri);
startActivity(it);
//where app_id is the application ID, find the ID
//by clicking on your application on Market home
//page, and notice the ID from the address bar
剛纔找 app id 未果,結果發現用 package name 也可以
Uri uri = Uri.parse("market://details?id=<packagename>");
這個簡單多了


17 尋找應用

Uri uri = Uri.parse("market://search?q=pname:pkg_name");
Intent it = new Intent(Intent.ACTION_VIEW, uri);
startActivity(it);
//where pkg_name is the full package path for an application


18 打開聯繫人列表

<1>
Intent i = new Intent();
i.setAction(Intent.ACTION_GET_CONTENT);
i.setType("vnd.android.cursor.item/phone");
startActivityForResult(i, REQUEST_TEXT);
<2>
Uri uri = Uri.parse("content://contacts/people");
Intent it = new Intent(Intent.ACTION_PICK, uri);
startActivityForResult(it, REQUEST_TEXT);


19 打開另一程序

Intent i = new Intent();
ComponentName cn = new ComponentName("com.yellowbook.android2",
"com.yellowbook.android2.AndroidSearch");
i.setComponent(cn);
i.setAction("android.intent.action.MAIN");
startActivityForResult(i, RESULT_OK);


20.調用系統編輯添加聯繫人(高版本 SDK 有效):

Intent it = new Intent(Intent.ACTION_INSERT_OR_EDIT);
it.setType("vnd.android.cursor.item/contact");
// it.setType(Contacts.CONTENT_ITEM_TYPE);
it.putExtra("name", "myName");
it.putExtra(android.provider.Contacts.Intents.Insert.COMPANY, "organization");
it.putExtra(android.provider.Contacts.Intents.Insert.EMAIL, "email");
it.putExtra(android.provider.Contacts.Intents.Insert.PHONE,"homePhone");
it.putExtra( android.provider.Contacts.Intents.Insert.SECONDARY_PHONE,
"mobilePhone");
it.putExtra( android.provider.Contacts.Intents.Insert.TERTIARY_PHONE,
"workPhone");
it.putExtra(android.provider.Contacts.Intents.Insert.JOB_TITLE,"title");
startActivity(it);


21.調用系統編輯添加聯繫人(全有效):

Intent intent = new Intent(Intent.ACTION_INSERT_OR_EDIT);
intent.setType(People.CONTENT_ITEM_TYPE);
intent.putExtra(Contacts.Intents.Insert.NAME, "My Name");
intent.putExtra(Contacts.Intents.Insert.PHONE, "+1234567890");
intent.putExtra(Contacts.Intents.Insert.PHONE_TYPE,
Contacts.PhonesColumns.TYPE_MOBILE);
intent.putExtra(Contacts.Intents.Insert.EMAIL, "[email protected]");
intent.putExtra(Contacts.Intents.Insert.EMAIL_TYPE,
Contacts.ContactMethodsColumns.TYPE_WORK);
startActivity(intent);


22(更新)

//直接打電話出去
Uri uri = Uri.parse("tel:0800000123");
Intent it = new Intent(Intent.ACTION_CALL, uri);
startActivity(it);
//用這個,要在 AndroidManifest.xml 中,加上
//<uses-permission id="android.permission.CALL_PHONE" />


23.最基本的 share 信息的 intent,可以傳一段 text 信息到各個手機上已安裝程序:如

SMS,Email,sina 微波,米聊,facebook,twitter 等等
Intent it = new Intent(Intent.ACTION_SEND);
it.putExtra(Intent.EXTRA_TEXT, "The email subject text");
it.setType("text/plain");
startActivity(Intent.createChooser(it, "Choose Email Client"));


24.調用 skype 的 intent

方法 1:老版,新版不可用,可能是因爲 skype 的 activity 結構變動:
//

Intent sky = new Intent("android.intent.action.CALL_PRIVILEGED");
sky.setClassName("com.skype.raider",
"com.skype.raider.contactsync.ContactSkypeOutCallStartActivity");
sky.setData(Uri.parse("tel:" + phone));
startActivity(sky);


方法 2:打開到 skype 的 main page:
//
PackageManager packageManager = getActivity().getPackageManager();
Intent skype = packageManager.getLaunchIntentForPackage("com.skype.raider");
skype.setData(Uri.parse("tel:65465446"));
startActivity(skype);
方法 3:傳入號碼,直接進入 skype 撥號畫面並打電話:
Intent intent = new Intent("android.intent.action.CALL_PRIVILEGED");
intent.setClassName("com.skype.raider",
"com.skype.raider.Main");
intent.setData(Uri.parse("tel:" + phone));
startActivity(intent);


一些常用的Intent:


Uri Action 功能 備註
geo:latitude,longitude Intent.ACTION_VIEW 打開地圖應用程序並顯示指定的經緯度
geo:0,0?q=street+address Intent.ACTION_VIEW 打開地圖應用程序並顯示指定的地址
http://web_address Intent.ACTION_VIEW 打開瀏覽器程序並顯示指定的URL
https://web_address Intent.ACTION_VIEW 打開瀏覽器程序並顯示指定的URL
tel:phone_number Intent.ACTION_CALL 打開電話應用程序並撥打指定的電話號碼
tel:phone_number Intent.ACTION_DIAL 打開電話應用程序並撥下指定的電話號碼
voicemail: Intent.ACTION_DIAL 打開電話應用程序並撥下指定語音郵箱的電話號碼
plain_text Intent.ACTION_WEB_SEARCH 打開瀏覽器程序並使用Google搜索引擎搜索

活動

Intent 說明 Action
CALL_ACTION 撥打電話,被呼叫的聯繫人在數據中指定。 android.intent.action.CALL
EMERGENCY_DIAL_ACTION 撥打緊急電話號碼。 android.intent.action.EMERGENCY_DIAL
DIAL_ACTION 撥打數據中指定的電話號碼。 android.intent.action.DIAL
ANSWER_ACTION 處理撥入的電話。 android.intent.action.ANSWER
DELETE_ACTION 從容器中刪除給定的數據。 android.intent.action.DELETE
PICK_ACTION 從數據中選擇一個項目 (item),將被選中的項目返回。 android.intent.action.PICK
DEFAULT_ACTION 和 VIEW_ACTION 相同,是在數據上執行的標準動作。 android.intent.action.VIEW
LOGIN_ACTION 獲取登錄憑證。 android.intent.action.LOGIN
ALL_APPS_ACTION 列舉所有可用的應用。 android.intent.action.ALL_APPS
CLEAR_CREDENTIALS_ACTION 清除登陸憑證 (credential)。 android.intent.action.CLEAR_CREDENTIALS
GET_CONTENT_ACTION 讓用戶選擇數據並返回。 android.intent.action.GET_CONTENT
EDIT_ACTION 爲制定的數據顯示可編輯界面。 android.intent.action.EDIT
BUG_REPORT_ACTION 顯示 activity 報告錯誤。 android.intent.action.BUG_REPORT
SETTINGS_ACTION 顯示系統設置。輸入:無。 android.intent.action.SETTINGS
WALLPAPER_SETTINGS_ACTION 顯示選擇牆紙的設置界面。輸入:無。 android.intent.action.WALLPAPER_SETTINGS
SENDTO_ACTION 向 data 指定的接收者發送一個消息。 android.intent.action.SENDTO
VIEW_ACTION 向用戶顯示數據。 android.intent.action.VIEW
PICK_ACTIVITY_ACTION 選擇一個 activity,返回被選擇的 activity 的類(名)。 android.intent.action.PICK_ACTIVITY
RUN_ACTION 運行數據(指定的應用),無論它(應用)是什麼。 android.intent.action.RUN
INSERT_ACTION 在容器中插入一個空項 (item)。 android.intent.action.INSERT
ADD_SHORTCUT_ACTION 在系統中添加一個快捷方式。. android.intent.action.ADD_SHORTCUT
WEB_SEARCH_ACTION 執行 web 搜索。 android.intent.action.WEB_SEARCH
SYNC_ACTION 執行數據同步。 android.intent.action.SYNC
MAIN_ACTION 作爲主入口點啓動,不需要數據。 android.intent.action.MAI

Intent 說明 Action
LABEL_EXTRA 大寫字母開頭的字符標籤,和 ADD_SHORTCUT_ACTION 一起使用。 android.intent.extra.LABEL
INTENT_EXTRA 和 PICK_ACTIVITY_ACTION 一起使用時,說明用戶選擇的用來顯示的 activity;和 ADD_SHORTCUT_ACTION 一起使用的時候,描述要添加的快捷方式。 android.intent.extra.INTENT
TEMPLATE_EXTRA 新記錄的初始化模板。 android.intent.extra.TEMPLATE

Intent 說明 Action
XMPP_DISCONNECTED_ACTION XMPP 連接已經被斷開。 android.intent.action.XMPP_DI
XMPP_CONNECTED_ACTION XMPP 連接已經被建立。 android.intent.action.XMPP_CONNECTED
BATTERY_CHANGED_ACTION 充電狀態,或者電池的電量發生變化。 android.intent.action.BATTERY_CHANGED
TIME_TICK_ACTION 當前時間已經變化(正常的時間流逝)。 android.intent.action.TIME_TICK
DATA_ACTIVITY_STATE_CHANGED_ACTION 電話的數據活動(data activity)狀態(即收發數據的狀態)已經改變。 android.intent.action.DATA_ACTIVITY
DATA_CONNECTION_STATE_CHANGED_ACTION 電話的數據連接狀態已經改變。 android.intent.action.DATA_STATE
MESSAGE_WAITING_STATE_CHANGED_ACTION 電話的消息等待(語音郵件)狀態已經改變。 android.intent.action.MWI
SIGNAL_STRENGTH_CHANGED_ACTION 電話的信號強度已經改變。 android.intent.action.SIG_STR
SERVICE_STATE_CHANGED_ACTION 電話服務的狀態已經改變。 android.intent.action.SERVICE_STATE
PHONE_STATE_CHANGED_ACTION 電話狀態已經改變。 android.intent.action.PHONE_STATE
PROVIDER_CHANGED_ACTION 更新將要(真正)被安裝。 android.intent.action.PROVIDER_CHANGED
FOTA_INSTALL_ACTION 更新已經被確認,馬上就要開始安裝。 android.server.checkin.FOTA_INSTALL
FOTA_READY_ACTION 更新已經被下載,可以開始安裝。 android.server.checkin.FOTA_READY
FOTA_RESTART_ACTION 恢復已經停止的更新下載。 android.server.checkin.FOTA_RESTART
MEDIA_SCANNER_STARTED_ACTION 開始掃描介質的一個目錄。 android.intent.action.MEDIA_SCANNER_STARTED
MEDIA_BAD_REMOVAL_ACTION 擴展介質(擴展卡)已經從 SD 卡插槽拔出,但是掛載點 (mount point) 還沒解除 (unmount)。 android.intent.action.MEDIA_BAD_REMOVAL
MEDIA_MOUNTED_ACTION 擴展介質被插入,而且已經被掛載。 android.intent.action.MEDIA_MOUNTED
MEDIA_REMOVED_ACTION 擴展介質被移除。 android.intent.action.MEDIA_REMOVED
MEDIA_UNMOUNTED_ACTION 擴展介質存在,但是還沒有被掛載 (mount)。 android.intent.action.MEDIA_UNMOUNTED
MEDIA_SHARED_ACTION 擴展介質的掛載被解除 (unmount),因爲它已經作爲 USB 大容量存儲被共享。 android.intent.action.MEDIA_SHARED
SCREEN_OFF_ACTION 屏幕被關閉。 android.intent.action.SCREEN_OFF
SCREEN_ON_ACTION 屏幕已經被打開。 android.intent.action.SCREEN_ON
FOTA_CANCEL_ACTION 取消所有被掛起的 (pending) 更新下載。 android.server.checkin.FOTA_CANCEL
DATE_CHANGED_ACTION 日期被改變。 android.intent.action.DATE_CHANGED
UMS_DISCONNECTED_ACTION 設備從 USB 大容量存儲模式退出。 android.intent.action.UMS_DISCONNECTED
CONFIGURATION_CHANGED_ACTION 設備的配置信息已經改變,參見 Resources.Configuration. android.intent.action.CONFIGURATION_CHANGED
UMS_CONNECTED_ACTION 設備進入 USB 大容量存儲模式。 android.intent.action.UMS_CONNECTED
PACKAGE_REMOVED_ACTION 設備上刪除了一個應用程序包。 android.intent.action.PACKAGE_REMOVED
PACKAGE_ADDED_ACTION 設備上新安裝了一個應用程序包。 android.intent.action.PACKAGE_ADDED
NETWORK_TICKLE_RECEIVED_ACTION 設備收到了新的網絡 “tickle” 通知。 android.intent.action.NETWORK_TICKLE_RECEIVED
TIME_CHANGED_ACTION 時間已經改變(重新設置)。 android.intent.action.TIME_SET
TIMEZONE_CHANGED_ACTION 時區已經改變。 android.intent.action.TIMEZONE_CHANGED
FOTA_UPDATE_ACTION 通過 OTA 下載並安裝操作系統更新。 android.server.checkin.FOTA_UPDATE
STATISTICS_STATE_CHANGED_ACTION 統計信息服務的狀態已經改變。 android.intent.action.STATISTICS_STATE_CHANGED
WALLPAPER_CHANGED_ACTION 系統的牆紙已經改變。 android.intent.action.WALLPAPER_CHANGED
PROVISIONING_CHECK_ACTION 要求 polling of provisioning service 下載最新的設置。 android.intent.action.PROVISIONING_CHECK
STATISTICS_REPORT_ACTION 要求 receivers 報告自己的統計信息。 android.intent.action.STATISTICS_REPORT
MEDIA_SCANNER_FINISHED_ACTION 已經掃描完介質的一個目錄。 android.intent.action.MEDIA_SCANNER_FINISHED
MEDIABUTTON_ACTION 用戶按下了“Media Button”。 android.intent.action.MEDIABUTTON
MEDIA_EJECT_ACTION 用戶想要移除擴展介質(拔掉擴展卡)。 android.intent.action.MEDIA_EJECT
CALL_FORWARDING_STATE_CHANGED_ACTION 語音電話的呼叫轉移狀態已經改變。 android.intent.action.CFF
BOOT_COMPLETED_ACTION 在系統啓動後,這個動作被廣播一次(只有一次)。 android.intent.action.BOOT_COMPLETED

Intent 說明 Action
LAUNCHER_CATEGORY Activity 應該被顯示在頂級的 launcher 中。 android.intent.category.LAUNCHER
PREFERENCE_CATEGORY activity是一個設置面板 (preference panel)。 android.intent.category.PREFERENCE
SAMPLE_CODE_CATEGORY To be used as an sample code example (not part of the normal user experience). android.intent.category.SAMPLE_CODE
FRAMEWORK_INSTRUMENTATION_TEST_CATEGORY To be used as code under test for framework instrumentation tests. android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST
SELECTED_ALTERNATIVE_CATEGORY 對於被用戶選中的數據,activity 是它的一個可選操作。 android.intent.category.SELECTED_ALTERNATIVE
BROWSABLE_CATEGORY 能夠被瀏覽器安全使用的 activities 必須支持這個類別。 android.intent.category.BROWSABLE
EMBED_CATEGORY 能夠在上級(父)activity 中運行。 android.intent.category.EMBED
DEFAULT_CATEGORY 如果 activity 是對數據執行確省動作(點擊, center press)的一個選項,需要設置這個類別。 android.intent.category.DEFAULT
DEVELOPMENT_PREFERENCE_CATEGORY 說明 activity 是一個設置面板 (development preference panel). android.intent.category.DEVELOPMENT_PREFERENCE
ALTERNATIVE_CATEGORY 說明 activity 是用戶正在瀏覽的數據的一個可選操作。 android.intent.category.ALTERNATIVE
UNIT_TEST_CATEGORY 應該被用作單元測試(通過 test harness 運行)。 android.intent.category.UNIT_TEST
GADGET_CATEGORY 這個 activity 可以被嵌入宿主 activity (activity that is hosting gadgets)。 android.intent.category.GADGET
WALLPAPER_CATEGORY 這個 activity 能過爲設備設置牆紙。 android.intent.category.WALLPAPER
TAB_CATEGORY 這個 activity 應該在 TabActivity 中作爲一個 tab 使用。 android.intent.category.TAB
HOME_CATEGORY 主屏幕 (activity),設備啓動後顯示的第一個 activity。 android.intent.category.HOME
TEST_CATEGORY 作爲測試目的使用,不是正常的用戶體驗的一部分。 android.intent.category.TEST

標誌 描述
MULTIPLE_TASK_LAUNCH 和 NEW_TASK_LAUNCH 聯合使用,禁止將已有的任務改變爲前景任務 (foreground)。 8 0x00000008
FORWARD_RESULT_LAUNCH 如果這個標記被設置,而且被一個已經存在的 activity 用來啓動新的 activity,已有 activity 的回覆目標 (reply target) 會被轉移給新的 activity。 16 0x00000010
NEW_TASK_LAUNCH 設置以後,activity 將成爲歷史堆棧中的第一個新任務(棧頂)。 4 0x00000004
SINGLE_TOP_LAUNCH 設置以後,如果 activity 已經啓動,而且位於歷史堆棧的頂端,將不再啓動(不重新啓動) activity。 2 0x00000002
NO_HISTORY_LAUNCH 設置以後,新的 activity 不會被保存在歷史堆棧中。 1 0x00000001

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章