0

ルート化されていないデバイスでは通常アクセスできない /etc およびその他のフォルダーにファイルをアセット フォルダーからコピーするアプリのルート アクセスまたはアクセス許可を取得する方法。

次のコードを書きましたが、結局のところ、エラーは発生せず、目的のアクションも実行されません。マニフェストで何かを編集する必要がありますか?

public class CopyFilesFromApkToSystemActivity extends Activity {
    /** Called when the activity is first created. */

    private static final String FILE1 = "usb_modeswitch.conf";
    private static final String FILE2 = "usb_modeswitch";
    private static final String FILE3 = "gprs";
    private static final String FILE4 = "ip-up";
    private static final String FILE5 = "cdma.sh";

    private static String PATH1 = "/etc/";
    private static String PATH2 = "/system/xbin/";
    private static String PATH3 = "/etc/ppp/peers/";
    private static String PATH4 = "/etc/ppp/";
    private static String PATH5 = "/system/xbin/";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Toast.makeText(this, "Copy started", Toast.LENGTH_SHORT).show();

        try {
            copyfile(FILE1,PATH1);
            copyfile(FILE2,PATH2);
            copyfile(FILE3,PATH3);
            copyfile(FILE4,PATH4);
            copyfile(FILE5,PATH5);



        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }




    }

    private void copyfile(String fileName, String pathName) throws IOException {

        InputStream mInput = this.getAssets().open(fileName);
        String outFileName = fileName + pathName;
        OutputStream mOutput = new FileOutputStream(outFileName);
        byte[] mBuffer = new byte[1024];
        int mLength;
        while ((mLength = mInput.read(mBuffer))>0)
        {
            mOutput.write(mBuffer, 0, mLength);
        }
        mOutput.flush();
        mOutput.close();
        mInput.close();

        //Toast.makeText(this, fileName + " copied", Toast.LENGTH_SHORT).show();


    }
}
4

2 に答える 2

0

誰かがルート権限を取得するために特定のクラスを作成しました。これを確認できます: http://muzikant-android.blogspot.ca/2011/02/how-to-get-root-access-and-execute.html

于 2012-08-09T12:59:06.457 に答える
0

Might be a issue of permissions on folders . Set permission on your folders before you start to copy and try

try {
                Runtime.getRuntime().exec("chmod 777 /etc/");
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
于 2012-08-09T13:00:16.163 に答える