2017-08-16 33 views
0

私はAndroid Studioプロジェクトで作成したデータベースのパスを取得しようとしています。パスをハードコードするとうまく動作しますが、そうでなければパスを取得できません。 実際のパスは:Androidでファイルの実際のパスを取得する方法は?

/data/data/package.name/databases/database.db

しかしgetPath()getDatabasePath()戻りような関数:

データ/ユーザ/ 0/package.name/databases/database.db

と入手可能:

W /システム:クラスローダは、未知のパスを参照:

メッセージを。 私はそれがウリの場所だと思いますか?実際のパスを取得するにはどうすればよいですか?

答えて

0

あなたはそれをコンテキストに渡していますか?コードは、database_nameはデータベースの名前です

String path = context.getDatabasePath(DATABASE_NAME).getPath(); 

のようになりますし、あなたのコンテキストを使用すると、定義されたコンテキストでなければなりません。

+0

はい、これは私の正確なコードです。 file = context.getDatabasePath( "database.db"); 文字列outFileName = file.getAbsolutePath(); – persiaprince

0

しかしある、getPath(のような関数)、あなたは逃したもののgetDatabasePath()の戻りデータ/ユーザー/ 0/package.name /データベース/ database.dbの

それが返さ何

は、正解ですスラッシュ。

実際のパスのみ、いくつかのOSのバージョンで、時には唯一のアプリケーション自体外部から

/data/data/package.name/databases/database.dbあります。 Androidはデバイスの複数のユーザーをサポートします。アプリに表示されるパスはユーザーによって異なります。

は、私が得る:W /システム:クラスローダ参照不明パス:このコードとは何の関係も持た​​ない、ランダムな警告がある

実際のパスを取得するにはどうすればよいですか?

これはデータベースのパスのように見えるので、getDatabasePath()を使用してください。

+0

私はスラッシュを逃したとは思わない。私はコンソールへのパスを印刷していて、それを含んでいませんでした。/data/dataパスをハードコードするが、data/userパスはハードコードしないと動作しない。 – persiaprince

+0

@persiaprince:質問を編集し、このパスで何をしているのかを実証し、「作用する」ことを説明する[mcve]を提供したいと思うかもしれません。 – CommonsWare

+0

申し訳ありませんが、スラッシュがありました。 「仕事」とは単に私がデータベースファイルにアクセスできることを意味します。 – persiaprince

関連する問題