1

私は File.java クラスを使用しています。そのメソッドのほとんどは、SecurityException をスローできます。しかし、それがスローされるケースに関する情報は見つかりません。

私はAndroidのソースを調べて、次のことを見つけました:さまざまなファイルメソッドがそのような呼び出しを実行します

 SecurityManager security = System.getSecurityManager();
    if (security != null) {
        security.e(path);
    }

または checkWrite() / checkDelete() このすべてのケースで、SecurityManager は FilePermission オブジェクトを作成し、Context.checkPermission() でそれを検証します。

public void checkRead(String file, Object context) {
    checkPermission(new FilePermission(file, "read"), context);
}

実際、このコードから、現在のコンテキストでファイル操作がいつ拒否され、SecurityException がスローされるかがわかりません (マニフェスト アクセス許可で宣言されていない些細な状況を除く)。アプリが「ルート」や「日付」などの保護されたディレクトリにアクセスしようとしたときにもスローされたと思います。しかし、他にいつですか?

4

1 に答える 1

1

SecurityExceptions は、アプリに実行権限がないことを実行しようとした場合に使用されます。つまり、マニフェストにリストされている WRITE_EXTERNAL パーミッションなしで SD カードに書き込みます。

私の知る限り、マニフェストにアクセス許可がないことが SecurityException を発生させる唯一の方法です。ただし、ファイル i/o を扱っているときはいつでも、IOException などの他の例外が発生する可能性があることに注意してください。

于 2013-01-17T14:41:00.280 に答える