Androidアプリ開発

メディアストアの画像や動画の削除

この記事は約10分で読めます。
記事内に広告が含まれています。
スポンサーリンク

この記事は Androidスマホ用のアプリ開発の中で、
今後の開発で再使用性が高いと思われるコーディングをまとめたものです。
Java での開発経験、XML構文規則、Android のアプリ開発経験がある方を対象としています。
Android のアプリ開発でお役にたててれば、嬉しいです。
(これから Android のアプリ開発や Java での開発を始めたい方への案内は、
記事の最後で紹介します)

この記事のテーマ


メディアストアで管理している画像や動画ファイルを削除する

スマホホルダーに直接置けるバンパー型が便利ですね!

ポイント

スマホ本体にある動画や画像ファイルにアクセスする場合に使用するコンテンツリゾルバ。
コンテンツリゾルバを使用して動画や画像ファイルを削除する場合、Androidのバージョンの違いで削除できない場合があります。
今回はメディアストアにある動画や画像ファイルを削除する実装を紹介します。

コンテンツリゾルバ

動画や画像ファイルの削除

画像や動画ファイルを削除する場合、コンテンツリゾルバにある管理情報とファイル本体を削除する必要があります。
また、Android10以降とその前では画像や動画ファイルを削除する処理が異なります。

// 動画や画像ファイル削除
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
    try {
        context.getContentResolver().delete(uri, null, null);
    } catch (SecurityException e) {
        if (e instanceof RecoverableSecurityException) {
            RecoverableSecurityException recoverableSecurityException = (RecoverableSecurityException) e;
            IntentSender intentSender = recoverableSecurityException.getUserAction().getActionIntent().getIntentSender();
            if (intentSender != null) {
                IntentSenderRequest intentSenderRequest = new IntentSenderRequest.Builder(intentSender).build();
                resultLauncher.launch(intentSenderRequest);
            }
        }
    }
} else {
    if (uri2File(uri).delete()) {
        context.getContentResolver().delete(
                MediaStore.Files.getContentUri("external"),
                MediaStore.Files.FileColumns.DATA + "=?",
                new String[]{uri.getPath()});
    } else {
       // 削除エラーの処理
       :
    }
}

Android10以降はコンテンツ リゾルバにUriを指定して、直接ファイルを削除します。
RecoverableSecurityExceptionが発生した場合、ファイルを削除する許可を求めます。
Android9以前はファイルの削除後、コンテンツ リゾルバにあるファイル管理情報を削除します。

◎uri2File

private File uri2File(Uri uri) {
    File file = new File(Objects.requireNonNull(uri.getPath()));
    Cursor cursor = context.getContentResolver().query(uri, new String[]{MediaStore.MediaColumns.DATA}, null, null, null);
    if (cursor != null) {
        String path = null;
        if (cursor.moveToFirst()) {
            path = cursor.getColumnCount() > 0 ? cursor.getString(0) : null;
        }
        cursor.close();
        if (path != null) {
            file = new File(path);
        }
    }
    return file;
}

Uriからファイルを削除するためのFileを返却します。

◎resultLauncher

private final ActivityResultLauncher<IntentSenderRequest> resultLauncher = registerForActivityResult(new ActivityResultContracts.StartIntentSenderForResult(),
        result -> {
            if (result.getResultCode() == Activity.RESULT_OK) {
                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
                        try {
                            context.getContentResolver().delete(deleteUri, null, null);
                        } catch (SecurityException e) {
                            // 削除エラーの処理
                            :
                        }
                    }
                }
           }
);

削除するファイルについて、ユーザ承認後にファイルを削除します。

今回は、ここまでです。

メディアストアの画像や動画を削除しているAndroidアプリです。

誤字脱字、意味不明でわかりづらい、
もっと詳しく知りたいなどのご意見は、
このページの最後にある
コメントか、
こちらから、お願いいたします♪

ポチッとして頂けると、
次のコンテンツを作成する励みになります♪

ブログランキング・にほんブログ村へ

これからAndroidのアプリ開発やJavaでの開発を始めたい方へ

アプリケーション開発経験がない方や、アプリケーション開発経験がある方でも、Java や C# などのオブジェクト指向言語が初めての方は、Android のアプリ開発ができるようになるには、かなりの時間がかかります。
オンラインスクールでの習得を、強くおススメします。

未経験者からシステムエンジニアを目指すのに最適です。まずは無料相談から♪

未経験者からプログラマーを目指すのに最適です。まずは無料カウンセリングから♪

カリキュラムとサポートがしっかりしています。お得なキャンペーンとかいろいろやっています♪

ゲーム系に強いスクール、UnityやUnrealEngineを習得するのに最適です。まずは無料オンライン相談から♪

参考になったら、💛をポッチとしてね♪

スポンサーリンク
msakiをフォローする
スポンサーリンク

コメント欄

タイトルとURLをコピーしました