2016-09-15 4 views
0

私はアプリのルートフォルダを取得しようとする問題に直面していますが、問題はマシュマロのエミュレータで発生します。それがあるべきときAndroidアプリのルートフォルダを取得する

データ/ユーザー/ 0/com.android.appname /ファイル/

データ/データ私はcontext.getFilesDir()を行うと、それは間違ったパスを返します。 /com.android.appname/files/

誰かがこれが起こっているのか、それを解決する方法や別の方法でアプリケーションのルートフォルダに正しいパスを取得するのかを知っていますか?

+0

「それは間違ったパスを返す」 - これはAndroidの新しいバージョンの場合は特に問題ありません。何が間違っていると思いますか? – CommonsWare

+0

私のアプリケーションがファイルを保存したフォルダは2番目のものです。 –

+0

これはどれくらい正確に決めていますか?ファイルシステムは、 'adbシェル'のようなツールで見たときに違って見えることに注意してください。 – CommonsWare

答えて

1

/data/user/0/com.android.appname/files/は、getFilesDir()によって返される完全に有効なパスです。そのディレクトリはあなたのアプリで使用可能になります。

adbはあなたのアプリではありません。ファイルシステムの見方は異なるでしょう。

どこgetFilesDir()の正確な位置は、実際のファイルシステム上にマップ—またはadbのようなツールはそれを参照してくださいする場所—ユーザーアカウントがあなたのアプリケーションを実行しているOSのバージョン、など、いくつかの基準に基づいて異なりますが(覚えている:Androidのは、複数のサポートユーザー!)、おそらくデバイスメーカー/カスタムROMの変更。

+0

私がしたいのは、私のアプリのSQLiteデータベースをルートフォルダからSDCardにコピーすることです。 'database'フォルダは、アプリケーションが見つけられない最初のパスの2番目のパスにあります。あなたが言うことは意味をなさないが、どちらのアプリもそのパスでデータベースを見つけることはできません。他のものが "正しい"場合、アプリケーションがなぜ/ data/data ...フォルダにデータベースを作成するのか教えていただけますか? –

+0

@AlbertoMéndez:両方とも同じ場所にマップされているため、どちらも正しいです。 – CommonsWare

+0

ええ、私は考えましたが、データベースファイルを取得しようとするcatch( 'IOException')に落ちて、' File not found'というメッセージをスローします。それが私がここに来た理由です。 –

関連する問題