和您一起終身學習,這里是程序員Android
本文主要是總結Intent 常用的方法,并封裝成Utils類中
主要涉及以下內容
一、通過組件名啟動
二、通過包名、類名啟動
三、通過類啟動
四、打電話
五、發短信
六、打開網頁
七、播放音樂
八、打開圖片
九、創建鬧鐘
十、創建定時器
十一、添加日歷事件
十二、拍照
十三、打開Camera
十四、打開視頻錄像
十五、選擇聯系人
十六、查看聯系人
十七、編輯聯系人
十八、插入聯系人
十九、寫郵件
二十、打開地圖指定點
二十一、檢索特定類型圖片
Intent 簡介請看上篇文章
Intent 使用方法詳解
一、通過組件名啟動 Activity
1. 使用方法
/**
* 通過組件名啟動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);
}
}
二、通過包名、類名啟動 Activity
1.使用方法
/**
* 通過包名類名啟動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);
}
}
三、 通過類啟動 Activity
1. 使用方法
/**
* 通過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);
}
}
四、 打電話
1. 使用Intent 打電話 方法如下
/**
* 打電話
* **/
public static void MakeCall(Context context, int number) {
// 需要打電話權限
// <uses-permission android:name="android.permission.CALL_PHONE"/>
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:"
+ number));
if (intent.resolveActivity(context.getPackageManager()) != null) {
context.startActivity(intent);
}
}
2.注意:打電話需要申請權限
<uses-permission android:name="android.permission.CALL_PHONE"/>
五、 發短信
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);
}
}
六、打開網頁
1. 使用方法
/**
* 打開網頁
* **/
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);
}
}
七、播放音樂
1. 使用方法
/**
* 播放音樂
* **/
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);
}
}
2.播放特定藝術家專輯
/**
* 搜索特定藝術家專輯
* **/
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);
}
}
八、 打開圖片
1. 使用方法
/**
* 打開圖片
* **/
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);
}
}
九、 創建鬧鐘
1. 使用方法
/**
* 創建鬧鐘
* **/
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);
2.設置鬧鐘action 機權限
<!-- 設置鬧鐘的權限 -->
<uses-permission android:name="com.android.alarm.permission.SET_ALARM" />
<activity android:name=".Intent.IntentMethod" >
<intent-filter>
<action android:name="android.intent.action.SET_ALARM" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
3.顯示所有鬧鐘
顯示所有鬧鐘
十、創建定時器
1. 使用方法
/**
* 創建定時器
* **/
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
<activity android:name=".Intent.IntentMethod" >
<intent-filter>
<action android:name="android.intent.action.SET_ALARM" />
<action android:name="android.intent.action.SET_TIMER" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
十一、 添加日歷事件
1. 使用方法
/**
* 添加日歷事件
* **/
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);
}
}
2. 日歷事件過濾
過濾日歷action
十二、 拍照
1.使用方法
/**
* 拍照
* **/
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);
}
}
2. 拍照過濾
拍照過濾Action
十三、打開Camera
1. 使用方法
/**
* 打開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);
}
}
2.打開Camera 過濾
Camera 過濾 Action方法
十四、打開視頻錄像
1.使用方法
/**
* 打開錄像視頻
* **/
public static void OpenCameraVideo(Context context) {
Intent intent = new Intent(MediaStore.INTENT_ACTION_VIDEO_CAMERA);
if (intent.resolveActivity(context.getPackageManager()) != null) {
context.startActivity(intent);
}
}
2. 打開錄像功能過濾
過濾錄像功能方法
十五、 選擇聯系人
1. 使用方法
/***
* 選擇聯系人
* **/
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);
}
}
十六、 查看聯系人
1.使用方法
/***
* 查看聯系人
* **/
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);
}
}
十七、 編輯聯系人
1. 使用方法
/***
* 編輯聯系人
* **/
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);
}
}
十八、插入聯系人
1.使用方法
/***
* 插入聯系人
* **/
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);
}
}
十九、寫郵件
1. 使用方法
/***
* 寫郵件
* **/
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);
}
}
2. 郵件過濾
郵件過濾 方法
二十、 打開地圖指定點
1. 使用方法
/***
* 打開地圖指定點
* **/
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);
}
}
二十一、檢索特定類型圖片
1.使用方法
/***
* 檢索特定類型圖片 獲取照片
* **/
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);
}
}
至此,本篇已結束。轉載網絡的文章,小編覺得很優秀,歡迎點擊閱讀原文,支持原創作者,如有侵權,懇請聯系小編刪除,歡迎您的建議與指正。同時期待您的關注,感謝您的閱讀,謝謝!