ギャラリー画像の削除について

2,762 views
Skip to first unread message

Miyazaki Yoshiaki

unread,
Jul 14, 2010, 6:42:31 AM7/14/10
to android-g...@googlegroups.com
皆様
 
お世話になっております。宮崎です。
もし知っている方がいらっしゃれば、教えてください。
 
XperiaのSDカードにあるギャラリー画像を削除するために
ContentResolver.deleteにてデータ削除を行おうと考えております。
 
しかし、「MediaStore.Images.Media.EXTERNAL_CONTENT_URI」が
Unknown or unsupported URL: content://media/external/images/mediaとして
Exceptionとなってしまいます。ギャラリー画像にあるものを削除する際のURIの指定方法が
間違っているのでしょうか?
 
query自体は、「MediaStore.Images.Media.EXTERNAL_CONTENT_URI」で引けるのですが、
deleteが出来ない理由が分からず困っております。
ソースコードとlogcatをのせてみます。
わかる方がいらっしゃれば、教えていただければ幸いです。
 
 /**
  * SDカードからの削除処理
  * @param dircotory ディレクトリ名(/sdcard/ + dirctory)
  * @param filename  ファイル名
  * @return 削除成功ならtrue、その他ならfalse
  */
 public static boolean deleteGallaryFile(ContentResolver cr, String dirctory, String filename){
  if(isWrite()){                      //SD
   try{
    filename = dirctory + "/" + filename;              //ファイル名
    Utility.outputLog("deleteGallaryFile filename = " + filename);
    //----------------------------------------------------
    // ファイルを削除する
    //----------------------------------------------------
    cr.delete(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, MediaStore.Images.Media.DATA + "=?", new String[]{filename});
    return true;
   }catch (Exception e) {
    e.printStackTrace();
   }
  }
  return false;
 }
---------------------------------------------------------------------------------------------------------------------
07-14 19:37:51.959: ERROR/DatabaseUtils(1073): java.lang.UnsupportedOperationException: Unknown or unsupported URL: content://media/external/images/media
07-14 19:37:51.959: ERROR/DatabaseUtils(1073):     at com.android.providers.media.MediaProvider.getTableAndWhere(MediaProvider.java:2280)
07-14 19:37:51.959: ERROR/DatabaseUtils(1073):     at com.android.providers.media.MediaProvider.delete(MediaProvider.java:2319)
07-14 19:37:51.959: ERROR/DatabaseUtils(1073):     at com.android.providers.media.ExtendedMediaProvider.delete(ExtendedMediaProvider.java:785)
07-14 19:37:51.959: ERROR/DatabaseUtils(1073):     at android.content.ContentProvider$Transport.delete(ContentProvider.java:150)
07-14 19:37:51.959: ERROR/DatabaseUtils(1073):     at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:150)
07-14 19:37:51.959: ERROR/DatabaseUtils(1073):     at android.os.Binder.execTransact(Binder.java:287)
07-14 19:37:51.959: ERROR/DatabaseUtils(1073):     at dalvik.system.NativeStart.run(Native Method)
07-14 19:37:51.959: WARN/System.err(28123): java.lang.UnsupportedOperationException: Unknown or unsupported URL: content://media/external/images/media
07-14 19:37:51.959: WARN/System.err(28123):     at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:131)
07-14 19:37:51.959: WARN/System.err(28123):     at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:111)
07-14 19:37:51.959: WARN/System.err(28123):     at android.content.ContentProviderProxy.delete(ContentProviderNative.java:382)
07-14 19:37:51.959: WARN/System.err(28123):     at android.content.ContentResolver.delete(ContentResolver.java:529)
07-14 19:37:51.959: WARN/System.err(28123):     at com.Utility.Utility_SdCard.deleteGallaryFile(Utility_SdCard.java:298)
07-14 19:37:51.959: WARN/System.err(28123):     at com.mbok.CameraViewerList$1.onClick(CameraViewerList.java:91)
07-14 19:37:51.959: WARN/System.err(28123):     at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:158)
07-14 19:37:51.959: WARN/System.err(28123):     at android.os.Handler.dispatchMessage(Handler.java:99)
07-14 19:37:51.959: WARN/System.err(28123):     at android.os.Looper.loop(Looper.java:123)
07-14 19:37:51.959: WARN/System.err(28123):     at android.app.ActivityThread.main(ActivityThread.java:4203)
07-14 19:37:51.959: WARN/System.err(28123):     at java.lang.reflect.Method.invokeNative(Native Method)
07-14 19:37:51.959: WARN/System.err(28123):     at java.lang.reflect.Method.invoke(Method.java:521)
07-14 19:37:51.959: WARN/System.err(28123):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:799)
07-14 19:37:51.959: WARN/System.err(28123):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
07-14 19:37:51.959: WARN/System.err(28123):     at dalvik.system.NativeStart.main(Native Method)
---------------------------------------------------------------------------------------------------------------------
 
 

てんき

unread,
Jul 14, 2010, 6:49:19 AM7/14/10
to android-g...@googlegroups.com

てんきです。

マニフェストファイルにSDカードアクセス権限は付加していらっしゃいますか?

検討違いでしたらすみません。

sent to Xperia

2010/07/14 19:42 "Miyazaki Yoshiaki" <ymiyaz...@gmail.com>:

 

--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。

Miyazaki Yoshiaki

unread,
Jul 14, 2010, 7:17:07 AM7/14/10
to android-g...@googlegroups.com
てんき様
 
お世話になっております。宮崎です。
AndroidManifest.xmlに対して以下の指定は行っております。
また、カメラ画像の保存をギャラリーへの登録も出来ているので、以下の設定に不備はないものと考えております。
 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>


2010年7月14日19:49 てんき <tenki...@gmail.com>:

てんき

unread,
Jul 14, 2010, 7:36:13 AM7/14/10
to android-g...@googlegroups.com

てんきです。

やはり検討違い…
すみませんでしたorz

後はログを読む限り、
ファイル名が正しく入っていないように見受けられるところでしょうか…?

駄レスですいません。

sent to Xperia

2010/07/14 20:17 "Miyazaki Yoshiaki" <ymiyaz...@gmail.com>:



てんき様
 
お世話になっております。宮崎です。
AndroidManifest.xmlに対して以下の指定は行っております。
また、カメラ画像の保存をギャラリーへの登録も出来ているので、以下の設定に不備はないものと考えております。
 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>


2010年7月14日19:49 てんき <tenki...@gmail.com>:


>
> てんきです。
>
> マニフェストファイルにSDカードアクセス権限は付加していらっしゃいますか?
>
> 検討違いでしたらすみません。
>
> sent to Xperia
>>

>> 20...



--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。

このグループに投稿するには、android-group-japan@googlegrou...

aharisu

unread,
Jul 14, 2010, 7:31:49 AM7/14/10
to android-g...@googlegroups.com
aharisuです。

てんき様、以下のようなコードで削除できないでしょうか。

public static boolean deleteGalleryFile(ContentResolver cr, String directory, String filename) {
if(isWrite()) {
Cursor cursor = null;
try{
filename = directory + "/" + filename;
cursor = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, 
new String[] {MediaStore.Images.Media._ID}, 
MediaStore.Images.Media.DATA + " = ?", 
new String[]{filename}, 
null);
if(cursor.getCount() != 0) {
cursor.moveToFirst();
Uri uri = ContentUris.appendId(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI.buildUpon(),
cursor.getLong(cursor.getColumnIndex(MediaStore.Images.Media._ID))).build();
cr.delete(uri, null, null);
return true;
}
}finally {
if(cursor != null)
cursor.close();
}
}
return false;
}

このコードそのものでの動作実験はできていないので間違いないという確証はないですが、
同じようなやり方で削除できることは確認しています。

もし希望の動作でない場合はもう一度お知らせください。


では。
aharisu

2010年7月14日20:17 Miyazaki Yoshiaki <ymiyaz...@gmail.com>:

mokkouyou

unread,
Jul 14, 2010, 7:35:34 AM7/14/10
to android-g...@googlegroups.com
mokkouyouです。

ちょっと迂回策ですが、
cr.delete(ContentUris.withAppendedId(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, id), null, null);

と、ID指定でdeleteなら消せると思います。
どうしても駄目だったらこちらを検討してみてはいかがでしょうか?

以上よろしくお願いいたします。


2010年7月14日20:17 Miyazaki Yoshiaki <ymiyaz...@gmail.com>:
てんき様



--
mokkouyou
mokk...@gmail.com

Miyazaki Yoshiaki

unread,
Jul 14, 2010, 9:43:00 AM7/14/10
to android-g...@googlegroups.com
天気様 aharisu様 mokkouyou様
 
お世話になっております。宮崎です。
aharisu様の内容で削除が出来ました。
ありがとうございます!
 
UriにはID値を付加しないといけないのですね・・・
query等のようにいけるものと考えていました。まったく持って勘違いしておりました。
3時間ぐらいずっとなやみっぱなしでした・・・様々な意見を頂きありがとうございました!
 
2010年7月14日20:35 mokkouyou <mokk...@gmail.com>:

Miyazaki Yoshiaki

unread,
Jul 14, 2010, 9:24:09 PM7/14/10
to android-g...@googlegroups.com
てんき様 aharisu様 mokkouyou様

 
お世話になっております。宮崎です。
aharisu様の内容で削除が出来ました。
ありがとうございます!
 
UriにはID値を付加しないといけないのですね・・・
query等のようにいけるものと考えていました。まったく持って勘違いしておりました。
3時間ぐらいずっとなやみっぱなしでした・・・様々な意見を頂きありがとうございました!
 
それにしてもなぜかGmailから送ろうとしてもエラーが出ますね・・・
昨日送ったはずのこのメールが飛んでいなかったとは・・・

Final-Recipient: rfc822; th...@ezweb.ne.jp
Action: failed
Status: 5.0.0
Diagnostic-Code: X-Postfix; host lsean.ezweb.ne.jp[222.15.69.195] said: 554
   Error: too many hops (in reply to end of DATA command)

2010年7月14日20:35 mokkouyou <mokk...@gmail.com>:

Miyazaki Yoshiaki

unread,
Jul 15, 2010, 10:02:30 AM7/15/10
to android-g...@googlegroups.com
てんき様 aharisu様 mokkouyou様
 
お世話になっております。宮崎です。
aharisu様の内容で削除が出来ました。
ありがとうございます!
 
UriにはID値を付加しないといけないのですね・・・
query等のようにいけるものと考えていました。まったく持って勘違いしておりました。
3時間ぐらいずっとなやみっぱなしでした・・・様々な意見を頂きありがとうございました!
 
それにしてもなぜかGmailから送ろうとしてもエラーが出ますね・・・
昨日送ったはずのこのメールが飛んでいなかったとは・・・

2010年7月14日20:31 aharisu <foo.y...@gmail.com>:

Yoshiaki Miyazaki

unread,
Jul 15, 2010, 10:06:14 AM7/15/10
to android-g...@googlegroups.com
てんき様 aharisu様 mokkouyou様

お世話になっております。宮崎です。
aharisu様の内容で削除が出来ました。
ありがとうございます!

UriにはID値を付加しないといけないのですね・・・
query等のようにいけるものと考えていました。まったく持っ
て勘違いしておりました。
3時間ぐらいずっとなやみっぱなしでした・・・様々な意見を
頂きありがとうございました!

それにしてもなぜかGmailから送ろうとしてもエラーが出ます
ね・・・
なんでなんだろう・・・
昨日から何回送っても以下の内容が・・・

This is the Postfix program at host mail4.hitachi.co.jp.

I'm sorry to have to inform you that your message could
not be
be delivered to one or more recipients. It's attached
below.

For further assistance, please send mail to <postmaster>

If you do so, please include this problem report. You can
delete your own text from the attached returned message.


--------------------------------------
Get the new Internet Explorer 8 optimized for Yahoo! JAPAN
http://pr.mail.yahoo.co.jp/ie8/

丹羽直也

unread,
Jul 15, 2010, 10:15:29 AM7/15/10
to android-g...@googlegroups.com

おそらく、その携帯電話の人が受信拒否でパソコンからのメールを受け付けてないと思います。

私がいうのもあれですが、こういうときにグループ運営の方が直接コンタクトする方がいいのではないのでしょうか・・・?

sent from Xperia
灘校パソコン研究部-Nada Persona Computer users' Association
Naoya Niwa
MyBlog Mine's Blog: http://mines-blogn.blogspot.com/
Twitter: @mine_studio
http://twitter.com/mine_studio

2010/07/15 23:06 "Yoshiaki Miyazaki" <miya3...@yahoo.co.jp>:

てんき様 aharisu様 mokkouyou様

お世話になっております。宮崎です。
aharisu様の内容で削除が出来ました。
ありがとうございます!

UriにはID値を付加しないといけない...

なんでなんだろう・・・
昨日から何回送っても以下の内容が・・・

This is the Postfix program at host mail4.hitachi.co.jp.

I'm sorry to have to inform you that your message could
not be
be delivered to one or more recipients. It's attached
below.

For further assistance, please send mail to <postmaster>

If you do so, please include this problem report. You can
delete your own text from the attached returned message.


--------------------------------------
Get the new Internet Explorer 8 optimized for Yahoo! JAPAN
http://pr.mail.yahoo.co.jp/ie8/

--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。

このグループに投稿するには、android-group-japan@googlegroup...

Hiroshi SAKURAI

unread,
Jul 18, 2010, 4:59:32 AM7/18/10
to android-g...@googlegroups.com
桜井と申します。

もう解決されたようですが、
EXTERNAL_CONTENT_URIに対するqueryでIDを付加しないと
落ちるのはAndroidのバグで、最近のバージョンでは直っています。

http://code.google.com/p/android/issues/detail?id=2861

2010/7/14 Miyazaki Yoshiaki <ymiyaz...@gmail.com>:

--
Hiroshi SAKURAI
http://assam-at-night.blogspot.com/

Miyazaki Yoshiaki

unread,
Jul 21, 2010, 12:25:22 AM7/21/10
to android-g...@googlegroups.com
桜井様
 
お世話になっております。宮崎です。
随分と返信が遅れてしまいましたが・・・
バグだったんですね。ちなみにバージョン1.6ベースで作成しているため、
現行環境ではバグ対応をしなければならないという感じですね。
 
かなり勉強になりました!ありがとうございます!

 
2010年7月18日17:59 Hiroshi SAKURAI <an.oli...@gmail.com>:
Reply all
Reply to author
Forward
0 new messages