2016-07-22 2 views
0

Я пытаюсь следующего кодомне удается удалить файл в андроиде Lolipop и выше

String Data = cursor.getString(cursor 
         .getColumnIndex(MediaStore.Audio.Media.DATA)); 

    File file = new File(Data); 
    if (file != null && file.exists()) { 
          // delete it 
          Toast.makeText(FileEditorDialog.this, "deleted not null", 
            Toast.LENGTH_LONG).show(); 
         } 


         boolean deleted = file.delete(); 


         if (deleted) { 
          Toast.makeText(FileEditorDialog.this, 
            "Successfully Deleted", Toast.LENGTH_LONG).show(); 

          sendBroadcast(new Intent(
            Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, 
            Uri.parse("file://" 
              + Environment.getExternalStorageDirectory()))); 
          finish(); 
         } 

Этот код работает в андроиде боба желе, но не андроид Lolipop как мы можем удалить файлы в андроиде Lolipop

+1

У вас есть разрешение WRITE_EXTERNAL_STORAGE? –

+0

Просьба предоставить нам файл манифеста –

+0

Какая ошибка? – Henry

ответ

1

Попробуй Декстер библиотека для проверки разрешения - WRITE_EXTERNAL_STORAGE

убедитесь, что у вас есть разрешение на AndroidManifest.xml

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

это необязательно, но библиотека под названием Dexter упрощает обработку мгновенных разрешений. добавить эту зависимость в build.gradle (приложение)

compile 'com.karumi:dexter:2.2.2' 

Создать класс приложения:

public class MyApplication extends Application { 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     Dexter.initialize(getApplicationContext()); 
    } 

} 

и установить его в AndroidManifest.xml

<application 
     android:name=".MyApplication" 

использовать этот кусок кода, чтобы спросить разрешение пользователя.

   Dexter.checkPermission(new PermissionListener() { 
       @Override public void onPermissionGranted(PermissionGrantedResponse response) { 

        deleteFile();//call the method to delete file 

       } 
       @Override public void onPermissionDenied(PermissionDeniedResponse response) { 
        Toast.makeText(getApplicationContext(), "Permission denied", Toast.LENGTH_LONG).show(); 
       } 
       @Override public void onPermissionRationaleShouldBeShown(PermissionRequest permission, PermissionToken token) { 
        token.continuePermissionRequest(); 
       } 
      }, Manifest.permission.WRITE_EXTERNAL_STORAGE); 
1

Вы должны получить разрешения Runitme от пользователя в android 6.0, только объявляя их манифестом, недостаточно.

Посмотрите here в моем более раннем ответе на этот вопрос.

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