Process process = Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(process.getOutputStream());
os.writeBytes("mount -o remount rw /data");
os.writeBytes("chmod 777 /data/data/com.a.aas/a.jpg");
os.writeBytes("dd if=/data/data/com.a.aas/a.jpg of=mnt/sdcard/b.jpg");
我无法复制此内容。我该怎么办?我向ext.storage添加了写权限!
os.writeBytes("cat /data/data/com.a.aas/a.jpg > mnt/sdcard/b.jpg");
也不起作用..但终端模拟器可以做到。请帮帮我!
答案 0 :(得分:0)
由于其他应用程序数据受到保护,您无法访问此数据。
您引用的关于ext.storage的权限是访问/ sdcard /目录,其中不包含/ data /其他应用程序。
如果您想在应用之间共享数据,则应使用ContentProvider API http://developer.android.com/guide/topics/providers/content-providers.html
您可以在此处详细了解Android应用数据安全性: http://developer.android.com/guide/topics/data/data-storage.html
默认情况下,保存到内部存储的文件对您来说是私有的 应用程序和其他应用程序无法访问它们(也不能 用户)。当用户卸载您的应用程序时,这些文件是 除去。
/ data /不在SD卡上,因此不会受元数据中ext.storage权限标志的影响。
答案 1 :(得分:0)
如何使用
p = Runtime.getRuntime().exec("su -c cp /data/data/com.a.aas/a.jpg /mnt/sdcard/b.jpg");
p.waitFor();
带
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
我也不能不知道为什么你没有&#34; /&#34;之前&#34; mnt&#34;在目的地。
或者您可以在复制内容之前获取externalstorage目录,
String s=Environment.getExternalStorageDirectory().toString();
p = Runtime.getRuntime().exec("su -c cp /data/data/com.a.aas/a.jpg "+ s +"/b.jpg");
p.waitFor(); // it is good practice to wait