Intent 常用方法總結

和您一起終身學習,這里是程序員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);
        }
    }

至此,本篇已結束。轉載網絡的文章,小編覺得很優秀,歡迎點擊閱讀原文,支持原創作者,如有侵權,懇請聯系小編刪除,歡迎您的建議與指正。同時期待您的關注,感謝您的閱讀,謝謝!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,527評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,687評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,640評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,957評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,682評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,011評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,009評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,183評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,714評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,435評論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,665評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,148評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,838評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,251評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,588評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,379評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,627評論 2 380

推薦閱讀更多精彩內容