现在项目有个照片加密功能,需要从系统中取出所有照片,通过加密使系统相册以及其他应用无法读取到我加密的图片,具体实现是使用了支持AES加密解密的CipherInputStream
和CipherOutputStream
借助这两个Stream可以实现将加密的图片文件读取成解密后的Bitmap实现。
言归正传,这篇文章并不是要介绍具体怎么实现加密,而是通过IOS应用内所独有的专属文件夹产生联想,android本身也有每个应用专属的存储地址,data/data大家一定都很熟悉。直接上代码
File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/DCIM/gif/move.JPG"); //原文件
FileOutputStream out = mContext.openFileOutput("testmove.jpg", mContext.MODE_PRIVATE);//导入到data/data下的新文件
结合上述方法加上java IO流写入,可以将源文件导入到你的包名下data/data/目录下,然后删除原文件,你就会发现,所有应用都无法读到你的图片,然后通过
读取data/data/里你所保存的文件,即可读出你应用“独有”照片,当然卸载应用时,包名下的所有文件都会被系统删除,所以并不建议通过这个方法永久保存文件。只是通过这个方法举一反三,系统数据库中包括 图片,视频,音频都可通过这个方法让你的app“独有”。FileInputStream input = mContext.openFileInput("testmove.jpg"); //读取data/data/ 下的文件