我不知道问题是不正确的SD卡路径还是其他东西,但在我的应用程序中我有一个按钮,onClick它会在sdcard中创建app
文件夹的副本(当然需要root) )。对我来说它有效,我有nexus 5的存储android 4.4它创建了一个名为BackupApps
的文件夹,其中有所有apk文件的文件夹app
,但有些用户告诉我该文件夹未创建。代码如下:
第一;我使用将创建的新文件夹在sdcard中创建了路径:
final File customfolder=new File(Environment.getExternalStorageDirectory().toString()+File.separator+"BackupApps");
然后是onClick代码:
copy.setOnClickListener(new OnClickListener() {
public void onClick(View v){
Process checkroot = null;
String rootcheck ="su";
String cd = "cd /";
String comando ="su cd cp -av /data/app "+customfolder;
customfolder.mkdir();
try {
Process copy = Runtime.getRuntime().exec(comando);
Toast.makeText(getActivity(), appmanagerfragment.this.getResources().getString(R.string.toastcopysi),
Toast.LENGTH_LONG).show();
Log.v("All In One Copia tag","Ok, folder copied in "+customfolder);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
任何想法?
答案 0 :(得分:0)
我不认为你的commando
是正确的,因为su cd cp...
没有任何意义。您应该从cd
commando
答案 1 :(得分:0)
首先,File File(String,String)有一个构造函数,它自己添加分隔符。
第二,我不确定非root用户机器人中有su
。此外,Android中可能不支持某些命令行键,例如ls -l
有效,但'ls -lF'不支持。
我建议你运行adb shell
并从命令行执行命令;当你知道他们做你想做的事情时,你就把它们移到了代码中。
BTW,命令行中的shell命令用;
分隔。
一般情况下,如果我的任务是复制一个目录,我建议(原谅)用“复制目录java”或“复制目录android stackoverflow”搜索google并借用其他人的代码。例如,this或this。 并添加写入SD卡到您的应用程序的权限。 (顺便说一下,这可能是子流程失败的原因。)