4

アプリケーションのデフォルトファイルディレクトリ内にないAndroidの内部メモリ内のファイルのFileInputStreamを取得する方法。

アプリケーション スペースに新しいディレクトリを作成しました。そのopenFileInput("filename")ため、 内のファイルに対してのみ機能しますgetFilesDir()。またopenFileInput("filename")、パス区切り文字「/」を使用した引数を受け入れないので、../myfolder/ に変更できます。

これを取得する方法はありますFileInputStreamか?..

注: 通常の API File = new File(... ) を使用すると、アクセス許可が拒否されたというエラーが発生します。また、カスタム フォルダーのアクセス許可として指定された Context.MODE_WORLD_WRITEABLE を既に作成しています。

明確にするために:私のファイルはここにあります==> /data/data/com.app.package/app_myfolder/file1.tmp 「myfolder」==>はContext.MODE_WORLD_WRITEABLE許可付きで作成されます。

で開きたいFileInputStreamですfile1.tmp。(通常、ファイルはここ/data/data/com.app.package/files/file1.tmpにありgetFilesDir()、このディレクトリを指しているためopenFileInput("")、同じデフォルトディレクトリに存在する引数もとります。)

4

1 に答える 1

0

アプリケーションのデフォルトのファイルディレクトリ内にないAndroidの内部メモリにあるファイルのFileInputStreamを取得する方法。

問題のファイルがopenFileOutput()withを使用して作成されていない限り、それはできません。MODE_WORLD_READABLEこれはあまり良い考えではありません(どのアプリもそのファイルを読み取ることができるため)。

MediaStore.ACTION_IMAGE_CAPTUREインテントのstartActivityForResult()の結果として、カメラアクティビティによってファイルが作成されたため。

カメラアクティビティは、ファイルを内部ストレージではなく外部ストレージに保存する必要があります。EXTRA_OUTPUT extraを使用して、ファイルの移動先を指定します。

では、この権限を変更する方法はありますか?

「カメラアクティビティ」がAndroidファームウェアのものを指していると仮定すると、ファームウェアを変更する必要があります。

于 2011-01-19T16:20:27.833 に答える