android中的SdCard路径正确路径?

时间:2013-12-06 09:31:32

标签: java android copy onclicklistener android-sdcard

我不知道问题是不正确的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();
                        }
                    }                  

        });

任何想法?

2 个答案:

答案 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并借用其他人的代码。例如,thisthis。 并添加写入SD卡到您的应用程序的权限。 (顺便说一下,这可能是子流程失败的原因。)