取其他程序XML至指定料
我想要其他程序底下的shared_prefs/的案,到一名bgyy的案, 可是是? 可否有人解
private void copy()
{
try
{
Process root = Runtime.getRuntime().exec("su");
File sd = Environment.getExternalStorageDirectory();
String path=sd.getPath()+"/bgyy";
File files=new File(path);
//files.mkdir();
if (sd.canWrite()) {
files.mkdir();
File file = new File("/data/data/otherpackagename/shared_prefs/CCC.xml");
File fos = new File("/sdcard/bgyy/CCC.xml");
FileInputStream inStream = new FileInputStream(file);
FileOutputStream outStream = new FileOutputStream(fos);
if(!file.exists()){
// 入案
int readLen = 0;
byte[] buf = new byte[1024];
while ((readLen = inStream.read(buf)) != -1) {
outStream.write(buf, 0, readLen);
}
//inStream.flush();
inStream.close();
outStream.close();
}
}
}catch(Exception e)
{
e.printStackTrace();
}
XML Java
07-23 08:07:24.583: W/System.err(29841): java.io.FileNotFoundException: /data/data/otherpackagename/shared_prefs/CCC.xml: open failed: EACCES (Permission denied)
07-23 08:07:24.583: W/System.err(29841): at libcore.io.IoBridge.open(IoBridge.java:416)
07-23 08:07:24.583: W/System.err(29841): at java.io.FileInputStream.<init>(FileInputStream.java:78)
07-23 08:07:24.583: W/System.err(29841): at com.XXX.MainActivity.copyDatabase(MainActivity.java:81)
07-23 08:07:24.583: W/System.err(29841): at com.XXX.MainActivity.access$0(MainActivity.java:65)
07-23 08:07:24.583: W/System.err(29841): at com.XXX.MainActivity$1.onClick(MainActivity.java:62)
07-23 08:07:24.583: W/System.err(29841): at android.view.View.performClick(View.java:4084)
07-23 08:07:24.583: W/System.err(29841): at android.view.View$PerformClick.run(View.java:16966)
07-23 08:07:24.583: W/System.err(29841): at android.os.Handler.handleCallback(Handler.java:615)
07-23 08:07:24.583: W/System.err(29841): at android.os.Handler.dispatchMessage(Handler.java:92)
07-23 08:07:24.583: W/System.err(29841): at android.os.Looper.loop(Looper.java:137)
07-23 08:07:24.583: W/System.err(29841): at android.app.ActivityThread.main(ActivityThread.java:4745)
07-23 08:07:24.583: W/System.err(29841): at java.lang.reflect.Method.invokeNative(Native Method)
07-23 08:07:24.583: W/System.err(29841): at java.lang.reflect.Method.invoke(Method.java:511)
07-23 08:07:24.583: W/System.err(29841): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
07-23 08:07:24.583: W/System.err(29841): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
07-23 08:07:24.583: W/System.err(29841): at dalvik.system.NativeStart.main(Native Method)
07-23 08:07:24.583: W/System.err(29841): Caused by: libcore.io.ErrnoException: open failed: EACCES (Permission denied)
07-23 08:07:24.583: W/System.err(29841): at libcore.io.Posix.open(Native Method)
07-23 08:07:24.583: W/System.err(29841): at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110)
07-23 08:07:24.583: W/System.err(29841): at libcore.io.IoBridge.open(IoBridge.java:400)
07-23 08:07:24.583: W/System.err(29841): ... 15 more
[解决办法]
请忽略楼上的回答
如果你是为了获取恰应用的sharedPreference 的话 也不是你那种获取方式
?//?获取其他应用程序的Context??
????????????otherContext?=?createPackageContext("com.jiahui.preferences",??
????????????????????CONTEXT_IGNORE_SECURITY);??
?SharedPreferences?preferences?=?otherContext??
????????????????????????.getSharedPreferences("test",??
????????????????????????????????Context.MODE_WORLD_READABLE);??
通过这种方式就可以 达到你获取其他应用的shared_pref下面的xml信息了。前提要那个应用创建的时候不是私有权限
data不能通过你那种方式获取 有别的方法
[解决办法]
返回/data/data/youPackageName/下的指定名称的文件夹File对象,如果该文件夹不存在则用指定名称创建一个新的文件夹。
sorry 占用了这么多楼层 楼主 不要生气哈