DeleteFile - mayurparmar2/AlarmDemo GitHub Wiki

Delete File

deletePhoto.java
public void deletePhoto(String filePath) {
    ArrayList<String> deletedFilePaths = new ArrayList<>();

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
        // Use MediaStore for Android 10 and later
        ContentResolver resolver = getContentResolver();

        // Query for the file in MediaStore
        Uri mediaUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
        String[] projection = { MediaStore.Images.Media._ID };
        String selection = MediaStore.Images.Media.DATA + "=?";
        String[] selectionArgs = new String[]{ filePath };
        Cursor cursor = resolver.query(mediaUri, projection, selection, selectionArgs, null);

        if (cursor != null && cursor.moveToFirst()) {
            long id = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Images.Media._ID));
            Uri contentUri = ContentUris.withAppendedId(mediaUri, id);

            try {
                // Delete the file using ContentResolver
                int rowsDeleted = resolver.delete(contentUri, null, null);
                if (rowsDeleted > 0) {
                    deletedFilePaths.add(filePath);
                    // Optional: Update media scanner
                    MediaScannerConnection.scanFile(this, new String[]{ filePath }, null, null);

                    // Handle UI updates or notify listeners about deletion
                    handleFileDeleted(deletedFilePaths);
                } else {
                    Log.e("DeletePhoto", "Failed to delete file: " + filePath);
                }
            } catch (RecoverableSecurityException e) {
                // Handle permission request if necessary
                handleRecoverableSecurityException(e);
            }
            cursor.close();
        } else {
            Log.e("DeletePhoto", "File not found in MediaStore: " + filePath);
        }
    } else {
        // Fallback for older Android versions (optional)
        File file = new File(filePath);
        if (file.exists() && file.delete()) {
            deletedFilePaths.add(filePath);
            handleFileDeleted(deletedFilePaths);
        } else {
            Log.e("DeletePhoto", "Failed to delete file: " + filePath);
        }
    }
}

private void handleFileDeleted(ArrayList<String> deletedFilePaths) {
    // Handle UI updates or notify listeners about deletion
    // For example:
    runOnUiThread(() -> {
        // Update UI or adapter after deletion
        adapter.notifyDataSetChanged();
        // Notify listeners or perform additional actions
        RxBus.getInstance().post(new DeleteEvent(deletedFilePaths));
    });
}

private void handleRecoverableSecurityException(RecoverableSecurityException e) {
    try {
        IntentSender intentSender = e.getUserAction().getActionIntent().getIntentSender();
        startIntentSenderForResult(intentSender, REQUEST_PERMISSION_DELETE_FILE, null, 0, 0, 0, null);
    } catch (IntentSender.SendIntentException sendIntentException) {
        sendIntentException.printStackTrace();
    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST_PERMISSION_DELETE_FILE) {
        if (resultCode == RESULT_OK) {
            // Permission granted, attempt to delete the file again if needed
            // For example:
            deletePhoto(filePathToDelete);
        } else {
            // Permission denied by user
            Toast.makeText(this, "Permission denied", Toast.LENGTH_SHORT).show();
        }
    }
}
⚠️ **GitHub.com Fallback** ⚠️