2011-12-07 19 views
4

アプリケーションでファイルアクセス権を変更しようとしました。コードは次のとおりです。アプリケーションのファイルアクセス権を変更する

このコードはアプリケーションでは動作しますが、エラーログはありません。 また、/ system/binの下にあるシェルツールを調べました.chmodは/ system/binにありますが、chmod>ツールボックスに表示されている情報もあります。私はこれについて明確ではない。私のアプリケーションはandroid:sharedUserId = "android.uid.system"を使用しています。 このコードを実行する方法、またはファイルのアクセス許可を変更する方法は?どうもありがとう。

+0

は、お使いの携帯電話が根ざしているトリックを行う必要がありますか?私の推測では、そのような敏感なコマンドはrootでなければ使えないということです。 – Lennart

+0

前にRuntime.getRuntime()。exec( "su")を追加しましたが、動作しません。 –

答えて

1

テストでパス/sdcard/を使用しました。あなたのSDカードは、標準のUnix権限をサポートするファイルシステムでフォーマットされていますか? (。FATにはない)

あなたは、文字列にchmod(1)への明示的なパスを与えていない - あなたはchmod(1)であることを確信している:あなたの現在のPATHの環境で利用可能なデバイス

  • で利用可能

    • 可変設定?

    自分が所有するファイルのアクセス権のみを変更できます。アプリケーションの実効ユーザーIDがSDカード上のファイルを所有しているかどうかは確かですか?

    最後に、Android may have additional security restrictions on changing file permissions。 Androidはうまくいきませんが、おそらくファイル許可ビットを変更すると、操作を宣言するマニフェストのエントリが必要になります。おそらくファイルアクセス権を変更することは、提供されたAPIを使ってのみ行うことができます。

  • +0

    '$ su'' #chmod 777/sdcard/test.txt'でコマンドを実行すると、権限を変更することができます。だから私はファイルパスが正しいと思います。 –

    +0

    文字列を '' su -c \ "に変更してみてください。chmod 777 /sdcard/test.txt \" "' – sarnold

    2
    Runtime rt = Runtime.getRuntime(); 
    Process proc; 
    try { 
        proc = rt.exec(new String[] { "su", "-c", "chmod 777 " + Constants.filename }); 
        proc.waitFor(); 
    } catch (Exception e){ //DOSTUFFS } 
    

    これは

    関連する問題