ギャラリーから画像を取得したいのですが、取得できません。エラーが発生します:
ストリームをデコードできません:java.io.FileNotFoundException:/storage/emulated/0/DCIM/Screenshots/Screenshot_20160715-233221.png:オープンに失敗しました:EACCES(アクセスが拒否されました)
そして私はこのコードを持っています:
Intent i = new Intent(PostCreateActivity.this, MainActivity.class);
startActivity(i);
overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right);
この:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
try{
if(requestCode == RESULT_LOAD_IMG && resultCode == RESULT_OK && null != data){
Uri selectedImage = data.getData();
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
imgDecodableString = cursor.getString(columnIndex);
cursor.close();
ImageView imgView = (ImageView) findViewById(R.id.imgView);
// Set the Image in ImageView after decoding the String
imgView.setImageBitmap(BitmapFactory
.decodeFile(imgDecodableString));
} else {
Toast.makeText(this, "You haven't picked Image",
Toast.LENGTH_LONG).show();
}
}catch(Exception e){
Toast.makeText(this, "Something went wrong!", Toast.LENGTH_SHORT).show();
}
}
そして:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
しかし、私はこのエラーを受け取り続けます。私に何ができる?
Android 6.0以降を使用している場合は、実行時に権限を要求する必要があります。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//......
//Check and ask for permissions in version Android API 23 and above.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
checkPermissions();
}
//.....
}
private void checkPermissions(){
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED||
ContextCompat.checkSelfPermission(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[]{
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE
},
1052);
}
}
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case 1052: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED
&& grantResults[1] == PackageManager.PERMISSION_GRANTED {
// permission was granted.
} else {
// Permission denied - Show a message to inform the user that this app only works
// with these permissions granted
}
return;
}
}
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加