2016-05-04 5 views
0

Я следующий код:android.provider.MediaStore.Images.Media.insertImage возвращает нуль

Uri u_img = Uri.parse(android.provider.MediaStore.Images.Media.insertImage(
getContentResolver(),f.getAbsolutePath(), null, null)); 

но android.provider.MediaStore.Images.Media.insertImage возвращает нуль на Galaxy S6 6.0.1.

Я попытался следующие возможные решения, но не повезло:

  1. Проверка разрешение на запись на внешний накопитель -> OK
  2. попытаться сделать проверку каталога там или нет f.exists(), и он возвращает значение true

Что может быть другой причиной?

+0

<использует-разрешение андроида: Name = "android.permission.READ_EXTERNAL_STORAGE" /> –

+0

Я думал, что запись также должна включать чтение 'Любое приложение, объявляющее разрешение WRITE_EXTERNAL_STORAGE, неявно предоставлено это разрешение.' – Rendy

+0

Проверьте http://stackoverflow.com/questions/12230942/why-images-media-insertimage-return- null –

ответ

0
public void addImageToGallery(final String filePath, final Context context) { 

    ContentValues values = new ContentValues(); 

    values.put(MediaStore.Images.Media.DATE_TAKEN, System.currentTimeMillis()); 
    values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg"); 
    values.put(MediaStore.MediaColumns.DATA, filePath); 

    context.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); 
} 
0

Вы сталкиваетесь с этой проблемой в android Marshmallow, как вы сказали на Galaxy S6 6.0.1. Это из-за разрешений. Вам нужно запросить разрешение на запись, так как MediaStore.Images.Media.insertImage попробуйте написать на SD-карте. Откройте диалог, используя код ниже:

ActivityCompat.requestPermissions(MainActivity.this, 
       new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 
       1); 

Кроме того, эта ссылка может помочь вам с разрешения в андроида 6 (Зефир) https://developer.android.com/training/permissions/requesting.html

Смежные вопросы