小米手机从相册选择图片问题

本文介绍了一种在小米手机上通过不同方式获取图片绝对路径的方法。对于除小米外的其他手机,使用ACTION_PICK可以直接获得图片路径;而对于小米手机,则推荐使用ACTION_GET_CONTENT,并根据不同安卓版本采取不同的处理方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从相册选择图片,我从标题栏的菜单项上进行点击操作

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getItemId() == R.id.enter_album) {
        Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");
        startActivityForResult(intent, 1);
    }
    return super.onOptionsItemSelected(item);
}


其中菜单项的id为enter_album,然后在onActivityResult方法中取出数据

@Override
protected void onActivityResult(int requestCode, int resultCode, final Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) {
        if (requestCode == 1 && data != null) {
            Uri selectedImage = data.getData();

            String[] filePathColumns = {MediaStore.Images.Media.DATA};
            Cursor c = getContentResolver().query(selectedImage, filePathColumns, null, null, null);
            c.moveToFirst();
            int columnIndex = c.getColumnIndex(filePathColumns[0]);
            String imagePath = c.getString(columnIndex);
            c.close();


        }
    }
}

拿到的imagePath即为图片路径,并且在其他手机上都能够打印出该字符串,吐槽,除了小米!


解决办法:http://blog.youkuaiyun.com/iamwutianbao/article/details/52459509


有大神已经解决,封装了一个工具类,MiPictureHelper,具体原因除了小米,用ACTION_PICK,都能得到一个图片的绝对路径。如果是小米,用ACTION_PICK,就需要去转化了。但是,小米用ACTION_GET_CONTENT或者ACTION_OPEN_DOCUMENT,低版本,也能得到绝对路径。。最后统一的处理方法就是,用ACTION_GET_CONTENT,然后分版本处理,低版本还是旧的方法,高版本,用pictureHelper工具类处理得到绝对路径。


特此记录一下,再次附上原文地址:http://blog.youkuaiyun.com/iamwutianbao/article/details/52459509


<think>我们正在讨论如何阻止小米手机相册应用扫描和显示特定文件夹中的图片。根据之前提供的方法,我们可以总结出几种有效的方式,特别是创建`.nomedia`文件的方法最为直接和常用。同时,结合引用中提到的内容,我们也可以考虑使用第三方库来管理图片,但用户的问题更偏向于系统设置而非开发。 以下是针对用户问题的具体解答: ### 方法一:创建`.nomedia`文件(推荐) 在需要隐藏的文件夹内创建一个名为`.nomedia`的空文件,这样Android的媒体扫描器会跳过该文件夹,相册应用就不会显示其中的图片。 **步骤:** 1. 打开手机上的“文件管理”应用。 2. 导航到需要隐藏图片的文件夹。 3. 点击右上角的“更多”或类似选项(通常为三个点),选择“新建”->“文件”。 4. 输入文件名`.nomedia`(注意前面有一个点),然后保存。 5. 重启手机或等待媒体扫描完成(可能需要一段时间)。 > 注意:此方法对大多数Android设备都有效,包括小米手机[^1]。 ### 方法二:更改文件夹名称 避免将文件夹命名为常见的图片文件夹名称(如`DCIM`、`Pictures`等),这样相册应用可能会忽略它。 **步骤:** 1. 将文件夹重命名为一个不常见的名称,例如在文件夹名前加上一个点(如`.my_images`)或使用其他非图片相关的名称。 2. 重启相册应用或重启手机。 ### 方法三:使用小米手机自带的隐私保护功能 小米手机提供了“私密相册”功能,可以将图片隐藏起来,不在普通相册中显示。 **步骤:** 1. 打开相册应用。 2. 长按选择需要隐藏的图片(或进入相册的“更多”选项)。 3. 选择“添加到私密相册”(可能需要先设置隐私密码)。 4. 这些图片将被移动到系统保护的私密相册中,普通相册不再显示。 ### 方法四:使用第三方工具加密或隐藏文件夹 可以借助第三方应用(如文件管理器或隐私保护应用)来隐藏文件夹。 **推荐应用:** - 文件管理器:如“ES文件浏览器”或“Solid Explorer”,它们支持创建隐藏文件夹或添加`.nomedia`文件。 - 隐私保护应用:如“应用锁”或“隐私空间”,可以将文件夹加密隐藏。 > 注意:使用第三方工具时,请注意应用的安全性[^1]。 ### 方法五:通过开发者选项禁用媒体扫描(高级) 对于高级用户,可以通过ADB命令暂时禁用媒体扫描,但这不是针对单个文件夹的解决方案。 **步骤(需要ADB调试):** 1. 在电脑上安装ADB工具。 2. 在手机上开启开发者选项和USB调试。 3. 连接手机,执行命令: ```bash adb shell am broadcast -a android.intent.action.MEDIA_MOUNTED -d file:///sdcard ``` 此命令会触发媒体扫描,但我们可以通过删除媒体存储数据来重置扫描,然后重新扫描时跳过特定文件夹(需配合.nomedia文件)。 > 注意:此方法较为复杂,一般用户不建议使用。 --- ### 相关问题 1. 如何恢复被小米相册隐藏的图片? 2. 除了.nomedia文件,还有哪些方法可以阻止Android媒体扫描? 3. 小米手机的私密相册功能如何使用?</think>要阻止小米手机相册应用扫描和显示特定文件夹中的图片,可以通过以下方法实现: ### 方法一:创建 `.nomedia` 文件(最有效) 1. **打开文件管理器** 使用小米自带的"文件管理"应用或第三方文件管理器(如ES文件浏览器) 2. **进入目标文件夹** 导航到需要隐藏图片的文件夹 3. **创建隐藏文件** - 点击右上角`⋮` → 新建 → 文件 - 输入文件名:`.nomedia`(注意开头的点) 4. **重启媒体扫描** 重启手机或进入"设置 → 存储 → 清理存储"触发媒体库刷新 > ✅ 原理:Android系统会自动忽略含此文件的文件夹[^1] ### 方法二:调整文件夹结构 1. 将敏感图片移动到非标准目录(如新建`/Documents/Private/`) 2. 避免使用系统自动扫描的目录: ```bash DCIM/ # 相机默认目录 Pictures/ # 系统图片目录 Download/ # 下载目录 ``` 3. 在文件夹名前加"."(如`.hidden_images`)可降低被扫描概率 ### 方法三:使用系统隐私功能 1. 打开相册 → 长按图片 → 添加到"私密相册" 2. 首次使用需设置隐私密码/指纹验证 3. 访问路径:相册 → 下拉刷新 → 输入密码进入私密空间 ### 方法四:ADB命令禁用媒体扫描(开发者适用) ```bash adb shell am broadcast -a android.intent.action.MEDIA_MOUNTED -d file:///sdcard/你的文件夹 ``` 配合在目标文件夹创建`.nomedia`文件可实现更彻底屏蔽 ### 方法五:第三方工具管理 使用开源库如[TakePhoto](https://github.com/crazycodeboy/TakePhoto)开发自定义相册应用[^1],通过代码控制扫描路径: ```java // 示例:动态添加.nomedia File nomedia = new File(Environment.getExternalStorageDirectory() + "/YourFolder/.nomedia"); if(!nomedia.exists()) { nomedia.createNewFile(); } ``` > ⚠️ 注意事项: > 1. 小米系统(MIUI)可能需要额外关闭"云同步相册" > 2. 修改后等待10-15分钟媒体库刷新 > 3. 截图文件夹(`/Pictures/Screenshots/`)需单独处理 --- ### 相关问题 1. 如何彻底恢复小米手机相册隐藏的图片? 2. Android媒体扫描机制的工作原理是什么? 3. 不同品牌手机(华为/OPPO)如何屏蔽相册扫描特定文件夹?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值