Android6.0機型上調用系統相機拍照返回的resultCode值始終等於0的問題


版權聲明:本文為博主原創文章,未經博主允許不得轉載。

正常情況下調用系統相機拍照: 
如果拍照后點擊的是“確定”圖標,返回的resultCode = -1(Activity.RESULT_OK); 
如果點擊的是底部的“返回”鍵,返回的resultCode = 0(Activity.RESULT_CANCELED)。

簡單的調用系統相機的寫法:

//調用系統拍照
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
String photofileName = "IMG_" + new Date() + ".jpg";
String imgUrl = Environment.getExternalStorageDirectory() + File.separator + "tempWhy"+ File.separator + photofileName;//必須使用已經存在的文件夾tempWhy
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(imgUrl)));
//啟動拍照的窗體。並注冊 回調處理
startActivityForResult(intent, 1111);

返回時的處理

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == Activity.RESULT_OK) {
        switch (requestCode) {
            //拍照功能
            case 1111:
                break;
        }
    }
}

那么,今天碰到的在Android6.0機型上出現的調用系統相機拍照返回的resultCode的值始終等於0的問題,主要是由於以下兩方面原因導致到:

一、沒有實現運行時權限的處理 
當AndroidManifest.xml文件中的Android:targetSdkVersion值大於等於23的時候,此時必須要實現運行時權限的處理,因為向SD卡讀寫文件的權限——android.permission.WRITE_SETTINGS屬於運行時權限。 
解決方案: 
方案一:將AndroidManifest.xml文件中的android:targetSdkVersion值修改為小於23 
方案二:添加運行時權限的處理

二、當指定拍照圖片保存路徑的時候,存儲目錄(文件夾)未創建 
解決方案:

調用系統相機拍照之前先創建存儲目錄


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM