我可以从其他app / data文件夹中复制文件吗?

时间:2014-06-19 04:27:15

标签: android

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");

也不起作用..但终端模拟器可以做到。请帮帮我!

2 个答案:

答案 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