参考资料一:

android中关于对文件SD卡以及手机本身内存中建立文件保存等操作

http://hi.baidu.com/fql_zlyy/item/855c31bc9ac751f24fc7fde0


在控制台修改手机文件系统的权限

D:\work>cd android-sdk-windowsD:\work\android-sdk-windows>cd platform-toolsD:\work\android-sdk-windows\platform-tools>adb shell$ susu# chmod 755 /datachmod 755 /data# chmod 755 /data/data/com.tvie.xj.ivideo/chmod 755 /data/data/com.tvie.xj.ivideo/# chmod 755 /data/data/com.tvie.xj.ivideo/files/chmod 755 /data/data/com.tvie.xj.ivideo/files/# chmod 755 /data/data/chmod 755 /data/data/#


此时没有修改files目录下的文件权限,所以files文件夹下的文件无法读取。

那么如何在程序中修改files文件夹下的文件读取权限呢?

参考链接:修改Android中的文件权限

http://blog.csdn.net/xyylchq/article/details/7817157


在应用管理中点击清除数据时,可以将数据data/data/package-name/中的所有文件(除lib目录外),全部删掉,但是在程序的清除缓存不能成功删除,这是为什么呢


修改前的权限是:- rw- --- ---

修改后的权限是:- rwx r-x r-x

以下是保存二维码的代码片段,如果SD卡不存在,保存到手机上。

// 保存按钮事件findViewById(R.id.btnSave).setOnClickListener(new View.OnClickListener() {    @Override    public void onClick(View v) {        if(source == null) return;        String title = "userinfo";        long dateTaken = System.currentTimeMillis();        Location location = null;        String filename = "user("+user.getUsername()+").png";        String directory = ImageManager.USER_INFO_DIRECTORY;        // sd卡不存在采用手机卡        if(!checkSDCardExist()) {            directory = context.getFilesDir().getPath();            if(!directory.endsWith("/"))                directory += "/";        }        int[] degree = new int[]{0};        Uri uri = ImageManager.addImage(getContentResolver(), title, dateTaken, location,                directory, filename, source, degree);        if(uri != null)            UIUtils.showToast(context, "保存二维码图片成功");            if(!checkSDCardExist()) {                String command = "chmod 755 " + directory + filename;                runCommand(command);            }    }});

片段SD卡是否存在的方法:

boolean checkSDCardExist() {                                                                                                            return Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);}

执行chmod命令的方法:

// 修改android文件系统权限// 示例:runCommand("chmod 777  /data/data/com.tvie.xj.ivideo/files/");private boolean runCommand(String command) {    Process process = null;    try {        process = Runtime.getRuntime().exec(command);        Logger.i("command", "The Command is : " + command);        process.waitFor();    } catch (Exception e) {        Logger.w("Exception ", "Unexpected error - " + e.getMessage());        return false;    } finally {        try {            process.destroy();        } catch (Exception e) {            Logger.w("Exception ", "Unexpected error - " + e.getMessage());        }    }    return true;}


删除媒体库代码

// 从content provider中删除image。public static void deleteImage(ContentResolver cr, String filePath) {                                                                        int count = cr.delete(STORAGE_URI, Images.Media.DATA + " = '" + filePath + "'", null);    Logger.i(TAG, "delete record from content where filePath = '"+filePath+"'");    Logger.i(TAG, "count:"+count);}

其中STORAGE_URI常量:

Uri STORAGE_URI = Images.Media.EXTERNAL_CONTENT_URI;

结果显示删除掉的记录个数是0:

11-11 17:59:38.189: D/ImageManager(22767): delete record from content where filePath = '/mnt/sdcard/ivideo/user/zxing/user(zhenhai01).png'11-11 17:59:38.189: D/ImageManager(22767): count:0


当android的系统启动的时候,系统会自动扫描sdcard内的多媒体文件,并把获得的信息保存在一个系统数据库中,以后在其他程序中如果想要访问多媒体文件的信息,其实就是在这个数据库中进行的,而不是直接去sdcard中取,理解了这一点以后,问题也随着而来:如果我在开机状态下在sdcard内增加、删除一些多媒体文件,系统会不会自动扫描一次呢?答案是否定的,也就是说,当你改变sdcard内的多媒体文件时,保存多媒体信息的系统数据库文件是不会动态更新的。

详见:android刷新媒体库

http://blog.csdn.net/winson_jason/article/details/8487991


参考资料2:android sdcard文件存储 + 媒体库更新方法

http://hi.baidu.com/moon_2009/item/a1d2cddd493e26dd251f401e


更多相关文章

  1. 批量复制IE临时文件(Temporary Internet Files)
  2. eclipse,android查看第三方jar源码
  3. Android(安卓)BaseAdapter 简单封装
  4. Android(安卓)7.0导航栏上添加图标
  5. Android(安卓)如何将Canvas上绘制的内容保存成本地图片
  6. 运行时权限方案:PermissionX
  7. Android(安卓)保存画图
  8. 第二个Activity和Android(安卓)ListView控件
  9. Android中TabHost的原理及使用

随机推荐

  1. Simple Gestures on Android
  2. Android(安卓)读取和保存文件(手机内置存
  3. Android的数据库--sqlite(一)
  4. 2011.07.06(2)——— android apiDemos 之
  5. Android(安卓)获取WIFI MAC地址的方法
  6. 小技巧及总结
  7. Android(安卓)studio图片ERROR: 9-patch
  8. button selector 样式
  9. Android简单注册表单
  10. Android(安卓)Wi-Fi 设置带宽代码流程