天天看點

Android-Hacks-35-發射多個Intent

發射多個意圖

在android 開發中最有特色之一的系統是Intent。如果你想要分享一些東西給其他的應用程式,你可以使用Intent完成這個任務。如果你想要打開一個連結,也可以用Intent完成。在android中,幾乎任何的事情都可以用Intent去完成。

如果你使用過手機的通信app工具,whatsapp,你可能知道你可以分享圖檔來自 gallery或者拍照 給你的聯系人。

拍攝照片

Intent takePhotoIntent = new Intent(
        MediaStore.ACTION_IMAGE_CAPTURE);
Intent chooserIntent = Intent.createChooser(takePhotoIntent,
                        "拍攝照片");
startActivityForResult(chooserIntent, );
           

從gallery中選擇一個圖檔

Intent pickIntent = new Intent(Intent.ACTION_GET_CONTENT);
pickIntent.setType("image/*");
Intent chooserIntent = Intent
            .createChooser(pickIntent, "請選擇照片");
startActivityForResult(chooserIntent, );
           
Android-Hacks-35-發射多個Intent

把上面的intent混合

從android api 5依賴,我們可以建立一個 chooser 和 添加更多的intents 。這個意味着代替了隻有一種類型的intent,我們可以用幾個 intent ,例如下面的:

Intent pickIntent = new Intent(Intent.ACTION_GET_CONTENT);
pickIntent.setType("image/*");

Intent takePhotoIntent = new Intent(
            MediaStore.ACTION_IMAGE_CAPTURE);

Intent chooserIntent = Intent.createChooser(pickIntent, "全部");
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS,
                new Intent[] { takePhotoIntent });
startActivityForResult(chooserIntent, );
           

建立一個image intent

建立一個拍照 的intent

把 拍照的intent 用putExtra添加到其他意圖上。

Android-Hacks-35-發射多個Intent

使用前面的代碼将會顯示intent的處理效果。但請記住,我們需要在Activity 中重寫 onActivityResult()方法,來做一些需要處理圖檔的事情。

下劃線

如果你可能了解intents 是如何工作的,這很重要。這個是android 環境中一個重要的部分。例如,如果你的app 使用一些代碼,調用手機中本來有的檔案管理器,這會讓使用者有更友好的體驗。