極力推薦文章:歡迎收藏
Android 干貨分享
本文主要是總結Intent 常用的方法,并封裝成Utils類中
主要涉及以下內容
通過組件名啟動
通過包名、類名啟動
通過類啟動
打電話
發短信
打開網頁
播放音樂
打開圖片
創建鬧鐘
創建定時器
添加日歷事件
拍照
打開Camera
打開視頻錄像
選擇聯系人
查看聯系人
編輯聯系人
插入聯系人
寫郵件
打開地圖指定點
檢索特定類型圖片
Intent 簡介請看上篇文章
[Intent 使用方法詳解](
http://www.jianshu.com/p/81e4...
使用方法
/** * 通過組件名啟動Activity * **/ public static void StartIntentFromComponent(Context context, Class intentClass) { Intent intent = new Intent(); // 1.使用ComponentName 啟動Activity ComponentName componentname = new ComponentName(context, intentClass); intent.setComponent(componentname); if (intent.resolveActivity(context.getPackageManager()) != null) { context.startActivity(intent); } }2. 通過包名、類名啟動 Activity
使用方法
/** * 通過包名類名啟動Activity * **/ public static void StartIntentFromPackage(Context context, String packageName, String className) { Intent intent = new Intent(); // 1.使用ComponentName 啟動Activity ComponentName componentname = new ComponentName(packageName, className); intent.setComponent(componentname); if (intent.resolveActivity(context.getPackageManager()) != null) { context.startActivity(intent); } }3. 通過類啟動 Activity
使用方法
/** * 通過Class啟動Activity * **/ public static void StartIntentFromClass(Context context, Class> classOpen) { Intent intent = new Intent(); // 2.使用Setclass方法,類方法間接使用ComponentName intent.setClass(context, classOpen); if (intent.resolveActivity(context.getPackageManager()) != null) { context.startActivity(intent); } }4. 打電話
使用Intent 打電話 方法如下
/** * 打電話 * **/ public static void MakeCall(Context context, int number) { // 需要打電話權限 //Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + number)); if (intent.resolveActivity(context.getPackageManager()) != null) { context.startActivity(intent); } }
#####注意:
打電話需要申請權限
5. 發短信
使用方法
1.基礎發送短信
/** * 1.基礎發送短信 * **/ public static void SendMms(Context context, String mmsString) { Intent sendIntent = new Intent(); sendIntent.setAction(Intent.ACTION_SEND); sendIntent.putExtra(Intent.EXTRA_TEXT, mmsString); sendIntent.setType("text/plain"); // sendIntent.setData(Uri.parse("smsto:")); // This ensures only SMS apps respond // 修改 Intnent 選擇器Tittle String title = context.getResources().getString(R.string.hello_world); Intent chooser = Intent.createChooser(sendIntent, title); // 驗證是否有Activity 接收 if (sendIntent.resolveActivity(context.getPackageManager()) != null) { context.startActivity(chooser); } }
2.自定義 發送短信
/** * 2.自定義 發送短信 * **/ public static void SendMmsCustom(Context context, String mmsString) { Intent sendIntent = new Intent(); sendIntent.setAction(Intent.ACTION_SEND); sendIntent.putExtra(Intent.EXTRA_TEXT, mmsString); sendIntent.setType("text/plain"); // sendIntent.setData(Uri.parse("smsto:")); // This ensures only SMS apps respond // 修改 Intnent 選擇器Tittle String title = context.getResources().getString(R.string.hello_world); Intent chooser = Intent.createChooser(sendIntent, title); // 驗證是否有Activity 接收 if (sendIntent.resolveActivity(context.getPackageManager()) != null) { context.startActivity(chooser); } }6. 打開網頁
使用方法
/** * 打開網頁 * **/ public static void OpenInternetUri(Context context, String uri) { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri)); if (intent.resolveActivity(context.getPackageManager()) != null) { context.startActivity(intent); } }7. 播放音樂
使用方法
/** * 播放音樂 * **/ public static void PlayMusic(Context context, String path) { // String // path=Environment.getExternalStorageDirectory().getAbsolutePath()+"test.mp3"; Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.parse("file:///" + path), "audio/*"); if (intent.resolveActivity(context.getPackageManager()) != null) { context.startActivity(intent); } }
播放特定藝術家專輯
/** * 搜索特定藝術家專輯 * **/ public static void playSearchArtist(Context context, String artist) { Intent intent = new Intent( MediaStore.INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH); intent.putExtra(MediaStore.EXTRA_MEDIA_FOCUS, MediaStore.Audio.Artists.ENTRY_CONTENT_TYPE); intent.putExtra(MediaStore.EXTRA_MEDIA_ARTIST, artist); intent.putExtra(SearchManager.QUERY, artist); if (intent.resolveActivity(context.getPackageManager()) != null) { context.startActivity(intent); } }8. 打開圖片
使用方法
/** * 打開圖片 * **/ public static void OpenImage(Context context, File file) { // File file =new File("/mnt/sdcard/1.png"); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFile(file), "image/*"); if (intent.resolveActivity(context.getPackageManager()) != null) { context.startActivity(intent); } }9. 創建鬧鐘
使用方法
/** * 創建鬧鐘 * **/ public static void SetAlarmIntent(Context context, String message, int hour, int minutes) { Intent intent = new Intent(AlarmClock.ACTION_SET_ALARM) .putExtra(AlarmClock.EXTRA_MESSAGE, message) .putExtra(AlarmClock.EXTRA_HOUR, hour) .putExtra(AlarmClock.EXTRA_MINUTES, minutes); if (intent.resolveActivity(context.getPackageManager()) != null) { context.startActivity(intent);
設置鬧鐘action 機權限
顯示所有鬧鐘
10. 創建定時器使用方法
/** * 創建定時器 * **/ public static void StartTimer(Context context, String message, int seconds) { Intent intent = new Intent(AlarmClock.ACTION_SET_TIMER) .putExtra(AlarmClock.EXTRA_MESSAGE, message) .putExtra(AlarmClock.EXTRA_LENGTH, seconds) .putExtra(AlarmClock.EXTRA_SKIP_UI, true); if (intent.resolveActivity(context.getPackageManager()) != null) { context.startActivity(intent); } }
添加設置SET_TIMER的Action
11. 添加日歷事件
使用方法
/** * 添加日歷事件 * **/ public static void AddCalendarEvent(Context context, String title, String location, Calendar begin, Calendar end) { Intent intent = new Intent(Intent.ACTION_INSERT) .setData(Events.CONTENT_URI).putExtra(Events.TITLE, title) .putExtra(Events.EVENT_LOCATION, location) .putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, begin) .putExtra(CalendarContract.EXTRA_EVENT_END_TIME, end); if (intent.resolveActivity(context.getPackageManager()) != null) { context.startActivity(intent); } }
日歷事件過濾
12. 拍照使用方法
/** * 拍照 * **/ public static void CapturePhoto(Context context, String targetFilename, Uri mLocationForPhotos) { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.withAppendedPath(mLocationForPhotos, targetFilename)); if (intent.resolveActivity(context.getPackageManager()) != null) { context.startActivity(intent); } }
拍照過濾
13. 打開Camera使用方法
/** * 打開Camera * **/ public static void OpenCamera(Context context) { Intent intent = new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA); if (intent.resolveActivity(context.getPackageManager()) != null) { context.startActivity(intent); } }
打開Camera 過濾
14. 打開視頻錄像使用方法
/** * 打開錄像視頻 * **/ public static void OpenCameraVideo(Context context) { Intent intent = new Intent(MediaStore.INTENT_ACTION_VIDEO_CAMERA); if (intent.resolveActivity(context.getPackageManager()) != null) { context.startActivity(intent); } }
打開錄像功能過濾
15. 選擇聯系人使用方法
/*** * 選擇聯系人 * **/ public static void SelectContact(Context context) { Intent intent = new Intent(Intent.ACTION_PICK); intent.setType(ContactsContract.Contacts.CONTENT_TYPE); if (intent.resolveActivity(context.getPackageManager()) != null) { context.startActivity(intent); } }16. 查看聯系人
使用方法
/*** * 查看聯系人 * **/ public static void ViewContact(Context context, Uri contactUri) { Intent intent = new Intent(Intent.ACTION_VIEW, contactUri); if (intent.resolveActivity(context.getPackageManager()) != null) { context.startActivity(intent); } }17. 編輯聯系人
使用方法
/*** * 編輯聯系人 * **/ public static void EditContact(Context context, Uri contactUri, String email) { Intent intent = new Intent(Intent.ACTION_EDIT); intent.setData(contactUri); intent.putExtra(Intents.Insert.EMAIL, email); if (intent.resolveActivity(context.getPackageManager()) != null) { context.startActivity(intent); } }18. 插入聯系人
使用方法
/*** * 插入聯系人 * **/ public static void InsertContact(Context context, String name, String email) { Intent intent = new Intent(Intent.ACTION_INSERT); intent.setType(Contacts.CONTENT_TYPE); intent.putExtra(Intents.Insert.NAME, name); intent.putExtra(Intents.Insert.EMAIL, email); if (intent.resolveActivity(context.getPackageManager()) != null) { context.startActivity(intent); } }19. 寫郵件
使用方法
/*** * 寫郵件 * **/ public static void composeEmail(Context context, String[] addresses, String subject, Uri attachment) { Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("*/*"); // intent.setData(Uri.parse("mailto:")); // only email apps should handle this intent.putExtra(Intent.EXTRA_EMAIL, addresses); intent.putExtra(Intent.EXTRA_SUBJECT, subject); intent.putExtra(Intent.EXTRA_STREAM, attachment); if (intent.resolveActivity(context.getPackageManager()) != null) { context.startActivity(intent); } }
郵件過濾
20. 打開地圖指定點使用方法
/*** * 打開地圖指定點 * **/ public static void callCar(Context context, Uri geoLocation) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(geoLocation); if (intent.resolveActivity(context.getPackageManager()) != null) { context.startActivity(intent); } }21 檢索特定類型圖片
/*** * 檢索特定類型圖片 獲取照片 * **/ public static void selectImage(Context context) { Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("image/*"); if (intent.resolveActivity(context.getPackageManager()) != null) { context.startActivity(intent); } }
至此,本篇已結束,如有不對的地方,歡迎您的建議與指正。同時期待您的關注,感謝您的閱讀,謝謝!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/75829.html
摘要:注意類別指示此的圖標應放入系統的應用啟動器。如果元素未使用指定圖標,則系統將使用元素中的圖標使用方法對象是對象的包裝器。主要應用于以下場景通知應用小部件定時任務使用注意事項適用于啟動的。 showImg(https://segmentfault.com/img/remote/1460000019975019?w=157&h=54); 極力推薦文章:歡迎收藏Android 干貨分享 s...
摘要:以前一直想寫一篇總結開發經驗的文章,估計當時的我還達不到某種水平,所以思路跟不上,下筆又捉襟見肘。在需求都還沒完成的時候把大量時間花在優化上是本末倒置的優化要用實際數據說話,借助測試工具進行檢測如網易的騰訊的和,科大訊飛的,的。 以前一直想寫一篇總結 Android 開發經驗的文章,估計當時的我還達不到某種水平,所以思路跟不上,下筆又捉襟見肘。近日,思路較為明朗,于是重新操起鍵盤開始碼...
摘要:極力推薦文章歡迎收藏干貨分享閱讀五分鐘,每日十點,和您一起終身學習,這里是程序員本篇文章主要介紹開發中的部分知識點,通過閱讀本篇文章,您將收獲以下內容生命周期簡介必須在中注冊啟動的方法啟動帶返回值的結束方法狀態保存,恢復的方法面 showImg(https://upload-images.jianshu.io/upload_images/5851256-0b56fc8e812963d7...
閱讀 3385·2021-11-24 09:38
閱讀 1385·2021-11-22 15:08
閱讀 1454·2021-09-29 09:35
閱讀 475·2021-09-02 15:11
閱讀 1304·2019-08-30 12:55
閱讀 384·2019-08-29 17:16
閱讀 492·2019-08-29 11:30
閱讀 415·2019-08-26 13:23