удалить файлы не принадлежащие в Android Q, используя код Java - PullRequest
0 голосов
/ 17 февраля 2020

Как мы можем удалить файлы, не принадлежащие владельцу, в Android Q

Я не хочу использовать средство выбора файлов SAF

Можем ли мы напрямую запустить SAF для удаления файла

или есть лучшее решение

Я сталкивался с этим

if (Build.VERSION.SDK_INT >=  Build.VERSION_CODES.Q) {
                    try {
                        String uri1 = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI.toString();
                        String where = MediaStore.Audio.Media._ID + "=?";
                        String[] selectionArgs = new String[]{String.valueOf(songforpopup._id)};
                        int deleted = getApplicationContext().getContentResolver().delete(Uri.parse(uri1), where, selectionArgs);
                        Toast.makeText(AllSongsActivity.this, "" + deleted, Toast.LENGTH_SHORT).show();
                        if (deleted>=0){
                            Toast.makeText(AllSongsActivity.this, "Succesfully deleted in Android Q",
                                    Toast.LENGTH_LONG).show();
                        }
                    } catch (SecurityException securityException) {
                        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
                            RecoverableSecurityException recoverableSecurityException;
                            if (securityException instanceof RecoverableSecurityException) {
                                recoverableSecurityException =
                                        (RecoverableSecurityException)securityException;
                            } else {
                                throw new RuntimeException(
                                        securityException.getMessage(), securityException);
                            }
                            IntentSender intentSender =recoverableSecurityException.getUserAction()
                                    .getActionIntent().getIntentSender();
                            try {
                                startIntentSenderForResult(intentSender, DELETE_PERMISSION_REQUEST,
                                        null, 0, 0, 0, null);
                            } catch (IntentSender.SendIntentException e) {
                                e.printStackTrace();
                            }
                        } else {
                            throw new RuntimeException(
                                    securityException.getMessage(), securityException);
                        }
                    }

                    new AsyncListViewLoader().execute(Order);
                    timerDelayRunForScroll(100);
                }

, но он не удаляет файл и не выдает исключение безопасности

1 Ответ

0 голосов
/ 17 февраля 2020

Попробуйте:

Uri uri = Uri.withAppendedPath(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, id);

int deleted = context.getContentResolver().delete(uri, null, null);
...