2010-11-17 7 views
1

私は私のアプリの内部ストレージ(/data/data/com.my_app)でディレクトリを作成し、方法のAndroid/Linuxファイルパーミッションの問題

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

経由ディレクトリにグローバル読み取り/書き込み権限を与えています

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

そして私は-へ/アウトのディレクトリのApp_Dataにうまく/書き込みファイルを読むことができました。私のアプリを通じて

は、私はLinuxのファイルのアクセス権が正しいことを確認しました。しかし、私の開発者の一人が突然ディレクトリに書き込めませんでした。私たちのアプリケーションでは、デバイス上のディレクトリにアクセスするのにも問題があります。

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

私たちが行うことができるのは、adb shell ls /data/data/my_app/app_dataのファイル一覧のみです。 adb shell ls -l /data/data/my_app/app_dataを実行すると、奇妙なことに何も返されません。そしてディレクトリにCDを入れることもできません。

誰かが問題の原因や解決方法を指摘していますか?私たちは知恵袋の終わりにいる。

非常に高く評価されています。

+0

あなたはそれを開いていない電話からdirにアクセスしようとしている間、ログには何も役立ちますか? – apps

+0

ADBシェルコマンドは有用なものを返しません。私のアプリケーションを通してディレクトリ内のファイルを読み書きしようとすると、Permission Deniedを記述する例外がスローされます。ディレクトリに対するdrw-rw-rw-permissionsを使用すると、少なくともファイルを書き込めることが期待されます。また、例外スタックトレース以外に関連するものはlogcatには表示されません。 – LLTLL

+0

バックトレースを投稿しますか? – JimR

答えて

1

ディレクトリには、ディレクトリの内容にアクセスできるように、実行(X)ビットが設定されている必要があります。私はアンドロイドモードを知らないが、MODE_WORLD_EXECUTABLEを探して、あなたがそれを設定できるかどうかを見てください。

基本的に、すべてのアクセス許可でディレクトリにグローバルにアクセスするには、モード0777(rwxrwxrwx)が必要です。

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

+0

私はこれを試してみます、チップのおかげで! – LLTLL

関連する問題