1

アプリの内部ストレージ (/data/data/com.my_app) にディレクトリを作成し、メソッドを介してディレクトリにグローバルな読み取り/書き込み権限を付与しました

context.getDir(DATA_DIR_NAME, Context.MODE_WORLD_READABLE | Context.MODE_WORLD_WRITEABLE);

アプリを通じて、Linux ファイルのアクセス許可が正しいことを確認しました。

drw-rw-rw- app_71 app_71 2010-11-16 18:38 app_data

そして、ディレクトリ app_data との間でファイルを読み書きすることができました。しかし、開発者の 1 人が突然、ディレクトリに書き込めなくなりました。私たちのアプリケーションも、彼のデバイスのディレクトリにアクセスできません。

奇妙なことは、ディレクトリのファイル許可がまだ同じであることです。ディレクトリへの書き込みは一切できず、ディレクトリ内のファイルを読み取ることもできません (ファイルには以前にグローバルな rw 権限が与えられていました)。

私たちができる唯一のことはadb shell ls /data/data/my_app/app_data、ファイルのリストを見ることです。変なことをしても何adb shell ls -l /data/data/my_app/app_dataも返ってこない。また、ディレクトリに CD することもできません。

問題が何であるか、またはこれを解決する方法について誰かが何かポインタを持っていますか? 私たちは機知に富んでいます。

とても有難い。

4

1 に答える 1

1

ディレクトリの内容にアクセスできるようにするには、ディレクトリに実行 (X) ビットを設定する必要があります。Androidモードはわかりませんが、それMODE_WORLD_EXECUTABLEを設定できるかどうかを探して確認してください。

基本的に、ディレクトリがすべてのパーミッションでグローバルにアクセスされるようにするには、モード 0777 (rwxrwxrwx) が必要です。

機能する理由lsは、ディレクトリ内のファイル名を読み取る権限があるためです。ディレクトリ内のファイルにアクセスして印刷ls -lするメタデータを取得できないため、機能しません。-l

于 2010-11-18T08:40:15.070 に答える