项目中需要做个SD卡文件复制到U盘的功能,但是直接用流写入不行。没有权限。
读写SD卡的权限4.0以后 不能写入U盘, 写入U盘的权限变成系统权限了。
我想知道复制文件除了流写入还有什么能实现?
不root使用linux命令可以么?在android中怎么使用?
因为我发现第三方的文件管理器可以往U盘里移动文件(ES),
就相当于第三方app在没有root权限情况下是可以往U盘里复制移动文件的。
哪位大神告诉我怎么操作??
<uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE"/>这个权限是往U盘写入的权限,但是现在是系统级的权限。所以我不能用IO流操作
如果使用contentProvider 能不能跳过这个权限 直接往U盘里写入呢??
/**
* 将文件复制到SD卡
*
* @return
* @throws IOException
*/
public boolean getSQLiteDatabase() throws IOException {
// 首先判断该目录下的文件夹是否存在
File dir = new File(DATABASE_PATH);
String filename1 = DATABASE_PATH + "/" + DATABASE_NAME;
if (!dir.exists()) {
// 文件夹不存在 , 则创建文件夹
dir.mkdirs();
}
// 判断目标文件是否存在
File file1 = new File(dir, DATABASE_NAME);
if (!file1.exists()) {
Log.i("msg", "没有文件,开始创建");
file1.createNewFile(); // 创建文件
}
Log.i("msg", "准备开始进行文件的复制");
// 开始进行文件的复制
InputStream input = context.getResources().openRawResource(rawid); // 获取资源文件raw
// 标号
try {
FileOutputStream out = new FileOutputStream(file1); // 文件输出流、用于将文件写到SD卡中
// -- 从内存出去
byte[] buffer = new byte[1024];
int len = 0;
while ((len = (input.read(buffer))) != -1) { // 读取文件,-- 进到内存
out.write(buffer, 0, len); // 写入数据 ,-- 从内存出
}
input.close();
out.close(); // 关闭流
// SQLiteDatabase sqlitDatabase = SQLiteDatabase.openOrCreateDatabase(
// filename1, null);
return true;
} catch (Exception e) {
Log.i("msg", "复制异常");
return false;
}
}