上傳照片遇到的小米和oppo大坑


在開發中需要實現選擇本地照片,然后上傳到服務器功能,本來寫好的代碼用自己的vivo手機和魅族手機測試都能實現上傳照片功能,但是測試姐姐拿oppo手機一測試,就出現bug,圖片無法上傳,本來以為是網絡原因,拿了個小米手機測試,結果也是無法上傳,好吧,最后考慮到是不是權限的問題(單純的在manifest中設置不行),發現需要動態設置讀取SD卡權限,否則上傳照片的時候無法找到照片路徑,好吧,其實就是一點代碼的事情

if (ContextCompat.checkSelfPermission(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
//權限還沒有授予,需要在這里寫申請權限的代碼
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
MY_PERMISSIONS_REQUEST_CALL_PHONE2);
} else {
//權限已經被授予,在這里直接寫要執行的相應方法即可
intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,"image/*");
startActivityForResult(intent, GET_IMAGE);
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (requestCode == MY_PERMISSIONS_REQUEST_CALL_PHONE2) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Intent intent2 = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent2, GET_IMAGE);
} else {
// Permission Denied
Toast.makeText(AliPayTransferActivity.this, "請前往設置允許讀寫SD卡權限", Toast.LENGTH_SHORT).show();
}
}
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}

加上這么點代碼就ok了


免責聲明!

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



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