web-dev-qa-db-ja.com

Androidアプリによって作成されたプライベートファイルの表示

MODE_PRIVATEに設定されたアプリによって書き込まれているxmlファイルがありますが、デバッグの目的で、電話の外部でそのファイルを読み取りたいと思います。 Eclipseでは、アプリで作成された他のファイルにアクセスして自分のコンピューターにコピーできますが、このプライベートファイルを表示することもできません。ファイルをMODE_WORLD_READABLEファイルに変更するだけでは役に立たないようです。ファイルは電話から削除できない内部の「SDカード」に保存されていると思いますが、ファイルエクスプローラーには空またはアクセスできない他の2つのフォルダーもあります。

誰もがファイルにアクセスできる方法を知っていますか?

21
AlbeyAmakiir

あなたは電話を接続し、あなたのSDKがそれを機能させるためにいくつかの魔法をかける必要があります(私はそれをデバッグモードにすると思いますか?)解凍した場所に移動しますAndroid sdk:

C:\Android-sdk_r10-windows\Android-sdk-windows\platform-tools>adb Shell
#cd data/data/com.yourpackage.yourapp/files
#ls

リストされたファイルが表示されます。アプリの完全修飾名がわからない場合は、「ls data/data」を実行する必要がある場合があります。ここから、ファイルが小さく、ファイルの内容を確認したい場合は、次のコマンドを実行できます。

#cat yourfilename.xml

または:

#exit
C:\Android-sdk_r10-windows\Android-sdk-windows\platform-tools>adb pull /data/data/com.yourpackage.yourapp/files/yourfile.xml

注:これはエミュレーターでのみ試しました。物理的な電話でadbを使用する方法がわかりません。

21
ueouoeuoeu

アプリがデバッグモードでインストールされている場合、デバイス上でプライベートファイルを取得できますルート化なし

  1. [Android-sdk]/platform-toolsフォルダーに移動し、adb Shellを実行します。
  2. run-as com.example.yourapp
  3. cp -r /data/data/com.example.yourapp /sdcard/

(ここで、com.example.yourappはアプリケーションのパッケージ名です。)上記の手順を実行した後、プライベートフォルダーアプリケーションのは、パッケージ名でsdcardストレージのルートにコピーされ、ダウンロードして表示する権限があります。

注1:ダウンロードする必要がない場合は、手順3の代わりにunixコマンドを使用して、ファイルやフォルダを移動したり一覧表示したりできます。

注2:Android Studio 2.0から、cacheおよびfiles/instant-runフォルダーに関連するファイルがさらに見つかります。 Instant RunおよびGPU Debugger機能、IDEによって配置されます。

40
Attila Tanyi

Context.MODE_PRIVATEファイルを表示するには、電話をルート化する必要があります

最終的にはデータ//ファイルに保存されると思いますが、それらを表示するにはroot権限が必要です

したがって、電話をルート化するか、デバッグが完了するまで待ってからContext.MODE_PRIVATEを追加します。

3
Rob R.

Eclipseを使用する場合、もう1つのオプションがあります。

DDMSパースペクティブ> [ファイルエクスプローラー]タブ> data/data/com.yourpackage.yourapp/files

ファイルをプル/プッシュ/削除できる場所。

2
Hong

別のオプションは、プライベートファイルをダンプするコマンドをアプリに含めることです。これは、ファイルを編集したくない場合にのみ機能しますが、ユーザーがファイルを壊すことができないため、本番環境に移行する前にファイルを削除する必要がないという追加のボーナスがあります。まあ、ファイルに機密情報が含まれていない限り。しかし、実際には、もしそうなら、あなたは何か間違ったことをしているのです。 @ user1778055が言ったように、ユーザーは自分の電話をルート化してアクセスできます。

0
AlbeyAmakiir