【#android】File.delete()でSDカードの画像を消しても,0バイトのファイルが残る
関連記事
- ぎんゆぅ~さんの更新頻度が落ちているときは仕事炎上中(爆 【2025年01月09日(木)】
- 仕事が納まった,のか?一応,拘束解除命令が出たモルモルモル 【2024年12月27日(金)】
- さすがに激務すぎ,ワロタ! 【2024年12月25日(水)】
- 今週もひたすらモノ書き #JAVA 祭りがまだまだ続く そろそろC#を書かせろー 【2024年12月04日(水)】
- 【#Kotlin】「ことりん」な実装依頼がキター 【2024年10月17日(木)】
Intent呼び出して,カメラ起動して返ってきてから,画像を加工して,さっさと元画像を消そうかと?
まず,フルパスファイル名を取るまで一苦労
Intentの戻りの中にフルパス名が入ってくることが分かって
ファイル名の取得方法@googleグループ内の記事
んじゃあとは,File.delete()でドカンと消せばええやん!じゃったんじゃが,これが消えない!
0バイトに詰められた画像ファイルが残って,スマフォのギャラリーアプリとか見たら,虫食い状態.非常にみっともない(汗
原因を追跡して行ったら,なんとなくサムネイルキャッシュが残っているような気がしてきた
ってことで調べたら,こちらにそのもの記事が...>SDカード内画像の削除@SugiBlog
ただ,こちらのコードは古いAndroid向けっぽい.Android Ver4以降に対応するためにちょいと弄った
ってことで,清書した結果がこれ
あとに来られる人のために残しておきまする
各記事を掲載された皆様,ありがとさんでございまする
んにしても,画像ファイル一個消すために半日潰れた(ブツブツ爆
【追記】
引数intentがNULLで返ってくる機体があるっ!
お借りしている,京セラTORQUEとか京セラTORQUEとか京セラTORQUEとか
(んたく,京セラは...ブツブツ)
>>String jpegFullPath = intent.getDataString();
なんて書いてたもんだから,いきなり,ぬるぽで落ちた(GRB爆
ってことで,intentがNULLの場合は,控えておいたURIオブジェクトから実パスを引っ張り出せる模様
コードを書きなおしておきますです
んで,URIから実パスを引っ張りだすカラクリは,こちらのサイトのコードを利用しました
AndroidでUriからファイルパスを取得する方法@9ensanのLifeHack
//------------------------------------------------------------------ //カメラからのActivty // //------------------------------------------------------------------ @Override protected void onActivityResult(int requestCode, int resultCode, Intent intent) { //SDカード内のファイルパスを得る String jpegFullPath = ""; if (intent != null) //SHな機体は if文の中身だけでOKだったんだが(ブツブツ { String jpegFullPath = intent.getDataString(); if (jpegFullPath.indexOf("content:") == 0) { Uri uri = Uri.parse(jpegFullPath); Cursor cur = getContentResolver().query(uri, null, null, null, null); cur.moveToPosition(0); jpegFullPath = cur.getString(1); cur.close(); } } //京セラTORQUEでは落ちやがった!ので,対応コード(ブツブツ else if (m_ImageUri != null) //m_ImageUriは カメラをIntent呼び出しする直前に,生成して保存かけておくURIオブジェクト { jpegFullPath = getPath(this, m_ImageUri); //URIの中から,ファイルへの実パスを得るスタティック関数 } //これでパスが取れなかったら,諦めましょう(爆 // //得た生画像を引き込んでこの辺りでゴニョゴニョする // //その生画像をとっとと消す if (jpegFullPath.equals("") == false) { File file = new File(jpegFullPath); if(file.exists()) { String[] proj = { MediaStore.Images.Media._ID, MediaStore.Images.Media.DATA }; Cursor cursor = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, proj, MediaStore.Images.Media.DATA + " = ?", new String[] { jpegFullPath }, null); if(cursor.getCount() != 0) { cursor.moveToFirst(); Uri deleteUri = ContentUris.appendId( MediaStore.Images.Media.EXTERNAL_CONTENT_URI.buildUpon(), cursor.getLong(cursor.getColumnIndex(MediaStore.Images.Media._ID))).build(); getContentResolver().delete(deleteUri, null, null); } file.delete(); cursor.close(); } } } //URIの中から,カメラの実パスを得るスタティック関数 public static String getPath(Context context, Uri uri) { ContentResolver contentResolver = context.getContentResolver(); String[] columns = { MediaStore.Images.Media.DATA }; Cursor cursor = contentResolver.query(uri, columns, null, null, null); cursor.moveToFirst(); String path = cursor.getString(0); cursor.close(); return path; }
コメント
【地震】大隅半島東方沖で地震:宮崎市などで震度4 津波の心配なし(25/4/3)
「ジャパニーズウイスキー」の基準“法律で明確化を”業界団体
【#桜】国富:大坪の一本桜を見物に行った!咲いてなかったドロドロドロ(25/3/22)
3月下旬なのに鰐塚山が雪を被ってる.これはヤバス(25/3/19)
JR日豊線・仙巌園駅3月15日開業 周辺含む総整備費は12億円、開業合わせ磯ビーチハウスにカフェオープン
【#確定申告】税務がオワタ!所得税&消費税申告書を提出した!財務省の役人どもはこの恨み,祝ってやるドロドロドロ
【#火事】都農町のキャンプ場近くで山林火災 現在も消火活動中(27日午後6時15分現在)
宮崎ー台湾 国際定期便が週2往復に増便へ 来月30日から(25/2/15)
『にっぽん縦断 こころ旅』4月から田中美佐子が新たな旅人に 火野正平さんが14年間担当
オリックス・バファローズのキャンプ見学に行ってきた,昨日(爆(25/2/9)