【问题标题】:Delete all photos on Android删除 Android 上的所有照片
【发布时间】:2013-04-08 18:05:14
【问题描述】:

我对 Android 比较陌生,无法使用它。

到目前为止,我有一个应用程序,它有一个大的圆形红色按钮。当用户按下它时,它会执行一个操作(此时它显示“Hello World”)。

相反,我希望它删除 Android 设备上的所有照片。 (是的,这是一件很奇怪的事情,我知道)

我的问题:

  1. 这可能吗?我在让它工作时遇到了麻烦,并且找不到以前这样做过的应用程序。

  2. 我唯一拥有的 Android 设备是 Nexus 7 平板电脑。我希望它可以在 Android 手机和平板电脑上运行。这也是可能的吗,据我了解,它们的目录结构各不相同?

【问题讨论】:

  • Hello world,删除所有照片...多么棒的应用程序啊!
  • 如果你是一个即将被抓到的作弊配偶,这是一个很好的功能。如果它也删除了所有的短信,老虎伍兹会喜欢这个应用程序的。使用扔掉的手机更容易,但作弊者不会。
  • 哈哈,不怕,现在没人作弊! :) 本来可以帮老虎大忙的!

标签: java android photos


【解决方案1】:

是的,您可以删除图片,但我不怀疑您可以一次全部删除。

我建议您查询Mediastore 以获取所有图像的_ID,然后遍历列表并删除它们。这是一些示例代码,但我相信它可以得到更好的优化。此代码与文件系统无关,因此它应该可以在任何地方工作。

获取 Mediastore.Images 上所有项目列表的代码

    List<Long> mediaStoreIds = new ArrayList<Long>();

    Cursor c = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new String[]{BaseColumns._ID}, null, null, null);

    if (c != null) {
        final int id = c.getColumnIndexOrThrow(BaseColumns._ID);

        c.moveToFirst();
        while (!c.isAfterLast()) {
            Long mediaStoreId = c.getLong(id);

            mediaStoreIds.add(mediaStoreId);
            c.moveToNext();
        }
        c.close();
    }

然后删除,你可以在原始循环中直接删除,也可以在数组列表中循环,但这里是删除方法:

context.getContentResolver().delete(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, BaseColumns._ID + "=?", new String[]{Long.toString(mediaStoreIds.get(i))});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多