Как удалить файл SDcard в Android - PullRequest
0 голосов
/ 16 января 2020

Я пытался удалить файл изображения из галереи, но это не так. Файлы изображений выводятся нормально, а функции обмена делаются. Он не может писать и удалять в моем приложении. Файлы удаляются из приложения по умолчанию. Я пытался удалить его, используя класс File и ContentResolver. но файл не был удален. Android targetSdkVersion равно 26, а compileSdkVersion равно 28.

Манифест

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

Я получаю путь SDcard от getSDcardPath ()

public String getSDcardPath(Context context) {
   File[] storage = ContextCompat.getExternalFileDirs(context, null);

   if(storage.length > 1 && storage[0] != null && storage[1] != null)
     return storage[1].toString();
   else
     return "";
}

Код класса файла Используется

public void useFileClass() {
   File mFile = new File("file Parent + file NAME");

   if (mFile.exists()) {
   mFile.delete();
   }
}

Используемый код ContentResolver

public void useContentResolver(Context context, File mFile) {

   ContentResolver contentResolver = context.getContentResolver();
   Uri mUri = getUri(context, mFile);

   contentResolver.delete(mUri, null, null);
}

public Uri getUri(Context context, File mFile) {
   Uri mUri;

   mUri = FileProvider.getUriForFile(context, "MyApplication", mFile);
   return mUri;
}

код доступа

public void shareImage() {
        Intent shareIntent = new Intent();
        shareIntent.setAction(Intent.ACTION_SEND);
        shareIntent.setType("image/*");
        shareIntent.putExtra(Intent.EXTRA_STREAM, getUri(this, mFile));

        startActivity(Intent.createChooser(shareIntent, "Share image too..."));
    }

1 Ответ

1 голос
/ 16 января 2020

Вам необходимо запросить разрешение перед доступом в хранилище. Попробуйте это:

private static final int MY_WRITE_STORAGE_PERMISSION_CODE = 200;    

private void checkPermission() {
    if (ContextCompat.checkSelfPermission(MainActivity.this,
                Manifest.permission.WRITE_EXTERNAL_STORAGE)
                != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(MainActivity.this,
                    new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
                    MY_WRITE_STORAGE_PERMISSION_CODE);
        } else {
            // Todo (Add, Delete, Edit, ...)
        }
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, 
            @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);


    if(requestCode == MY_WRITE_STORAGE_PERMISSION_CODE)
    {
        if (ContextCompat.checkSelfPermission(MainActivity.this,
                Manifest.permission.WRITE_EXTERNAL_STORAGE)
                == PackageManager.PERMISSION_GRANTED) {
            // Todo (Add, Delete, Edit, ...)
        } else {
            // Permission Deny
        }
    }
}

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...