Я пишу приложение, в котором пользователь нажмет кнопку в приложении, откроется галерея, пользователь выберет изображение из галереи и выбранного изображение должно отображаться в изображенииView, которое я разместил на экране. Когда я нажимаю кнопку, появляется галерея, я выбираю изображение, но по какой-то причине изображение не отображается на экране моего приложения. Большое спасибо за Вашу помощь. Я добавил только два разрешения следующим образом:Показать картинку в галерее приложения на Android
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
И вот мой код:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void showPicture(View view) {
Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
if (intent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(intent, 1);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1 && resultCode == RESULT_OK && null != data) {
Uri photoUri = data.getData();
Bitmap selectedImage = null;
try{
selectedImage = MediaStore.Images.Media.getBitmap(this.getContentResolver(), photoUri);
} catch (Exception e){
e.printStackTrace();
}
ImageView imageView = (ImageView) findViewById(R.id.image);
imageView.setImageBitmap(selectedImage);
}
}
}
Edit: я попытался код, приведенный в ответ, но я получаю следующие ошибки в моей трассировки стека. Только RuntimeExceptions показаны для краткости:
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { dat=content://media/external/images/media/46 }} to activity {cs193a.stanford.edu.testproject/cs193a.stanford.edu.testproject.MainActivity}: java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/images/media/46 from pid=2754, uid=10059 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()
Caused by: java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/images/media/46 from pid=2754, uid=10059 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()
Единственная строка кода, которая представляется проблематичным в моем коде снова линия, где объявлен курсор. Большое спасибо за помощь
Я попробовал код выше, но мое приложение падает, когда я его использую. Кажется, что есть проблема с линией: Курсор курсор = getContentResolver(). Query (selectedImage, filePathColumn, null, null, null); – BBB
опубликуйте трассировку стека, чтобы показать ошибку. –
См. Мой отредактированный пост для этой ошибки. Спасибо – BBB