2012-01-04 6 views
2

ファイルをassetsディレクトリからAndroidの/ systemディレクトリにコピーするアプリケーションを作成しています。ファイルをAndroid/systemディレクトリに保存する方法は?

私はこれを達成することに近づいていると感じますが、私はかなりありません。ここに私がしようとしている戦略です:

まず、私がして、/システムディレクトリのパーミッションを変更しようとしました:

Runtime.getRuntime().exec("su"); 
Runtime.getRuntime().exec("mount -o rw,remount -t yaffs2 /dev/block/mtdblock4"); 
Runtime.getRuntime().exec("chmod -R 777 /system"); 

第二に、私は/システムディレクトリにファイルを書き込もうとしました。

私は、ディレクトリを再マウントすることで、ファイルを書き込むことができます。確かに、これは端末で動作するように見えました。しかし、アプリケーションでは、次のコマンドが実行される前に各コマンドが完了したことを確認する方法を理解できませんでした。

誰にも提案はありますか?

答えて

0

exec()メソッドからの戻り値があり、実行が正常に行われたかどうかを確認する必要があると仮定します。

しかし、私はあなたがこの一連のコマンドを実行するために、あなたの試みのいくつかのミスを持っていると思う:

  • suは、独自のプロセスと子プロセスに影響を与えることができます。引数なしで実行するので、何もしません。次のexec()メソッドは、プロセスの正確な権限で最初からやり直します。期待される昇格された権限ではありません。
  • mount(8)コマンドが正しいと思わない:どのマウントポイントを操作するのかわからない。 (デバイスが複数の場所にマウントされている可能性があることを忘れないでください)
  • chmod(1)コールは特権でも実行されません。およびは許可の設定が行き過ぎです。おそらく、あなたのデバイスのセキュリティは気にしませんが、それはあなたが望むものであることを確実にしてください。

    Runtime.getRuntime().exec("su -c \"mount -orw,remount /system\""); 
    

    そして、私はあなたのchmodコマンドは、より多くのようになるはずと信じて:再び

    Runtime.getRuntime().exec("su -c \"chmod 777 /system/fonts\""); 
    

    、あなたがの結果を理解確実である私はあなたのmountコマンドは、より多くのようになるはずと信じて

システム権限を持つすべてのユーザーが他のユーザーが実行できるファイルに書き込むことができます。

+0

アドバイスありがとうございますが、単にファイルを書き込むための最小限の権限設定をお勧めしますか?また、ファイルが書き込まれるとすぐに、アクセス許可を通常の状態に戻すことも可能ですか? –

+0

真剣に許可を偶然しないでください!rootとして実行している場合は、アクセス権は問題になりません。 – slayton

+0

しかし、このユーザーだけがこのアプリにアクセスできますか?他の誰かがこれにどのように繋がりますか?あなたはアクセス許可をリセットすることをお勧めしますか? –

1
Runtime.getRuntime().exec 

は、コマンド が正しいか間違って実行を保証するために、それをチェックすることができ、あなたが

これらの方法から
getInputStream or getOutputStream or getErrorStream 

、あなたはコマンドが結果を実行し得ることができ、プロセスのクラスから、Processを返します。 。

+0

これはまた非常に有用な提案です、ありがとうございます。 –

関連する問題