web-dev-qa-db-ja.com

Androidデバイスのデータ/データフォルダにアクセスするには?

私はアプリを開発していますが、私のデータベース*.dbdata/data/com.****.***に表示されます。

私はsqliteマネージャーの助けを借りてEclipseでAVDからこのファイルにアクセスすることができます

しかし、私は自分のAndroid携帯電話でこのファイルにアクセスすることができません。
私はそれをグーグルし、それをするために私の電話を根絶する必要があると言っています、しかし私はそれをしたくありません。 (新しい電話、保証の問題、およびセキュリティの問題)

だからここに私の質問です:私は私のAndroid携帯電話 "それを応援せずに"で私のdata/data/.....ディレクトリにアクセスすることができますか?

それを根付かせずにディレクトリdata/data.....のためのユーザ許可を変更できますか?

266
Naveen Prince P

あなたの電話で直接ファイルにアクセスするのは難しいです、しかしあなたはあなたがそれであなたが望む何でもすることができるあなたのコンピュータにそれらをコピーすることができます。応援せずに2つのオプションがあります。

  1. アプリケーションがデバッグ可能な場合は、adbシェルでrun-asコマンドを使用できます。

    adb Shell
    run-as com.your.packagename 
    cp /data/data/com.your.packagename/
    
  2. あるいは、Androidのバックアップ機能を使用することができます。

    adb backup -noapk com.your.packagename
    

    これで「デバイスのロックを解除してバックアップ操作を確認する」というプロンプトが表示されます。パスワードを入力しないのが最善です。そうしないと、データを読むのが難しくなります。 「データをバックアップする」をクリックするだけです。作成されたコンピュータ上の 'backup.ab'ファイルには、Androidバックアップ形式のすべてのアプリケーションデータが含まれています。基本的には圧縮されたtarファイルです。 このページ はOpenSSLのzlibコマンドを使って解凍する方法を説明しています。バックアップを復元するには、adb restore backup.dbコマンドを使用できます。

327
THelper

Android Studio 3.0以降を使用している場合は、次の手順に従ってください。

  1. 表示 > ツールウィンドウ > デバイスファイルエクスプローラ をクリックします。
  2. /data/data/[パッケージ名] nodesを展開します。

Root以外のデバイスでデバッグモードで動作するパッケージのみを展開できます。

Steps followed in Android Studio 3.0

95
Shahidul

Root Explorerアプリを使ってdbを取得することもできます。それでもうまくいかない場合は、これを試すことができます。

  1. Cmdを開く
  2. ディレクトリを変更して「プラットフォームツール」に進みます。
  3. adb Shell」と入力します
  4. su
  5. 端末で[許可]を押す
  6. chmod 777 /data /data/data /data/data/com.application.package /data/data/com.application.package/*
  7. EclipseでDDMSビューを開き、そこから「FileExplorer」を開いて目的のファイルを取得します。

これの後で根ざした装置のファイルを拾い読みできるべきである。

59

上記のいずれかを実行するには(つまり、携帯電話自体から保護されたフォルダにアクセスするには)、まだrootが必要です。 (これには/ dataフォルダのマウントパーミッションの変更とアクセス)

Rootなしでは、コードを介してあなたの内部からを除くアプリケーションを直接読むために/dataにアクセスすることは不可能です。そのため、そのファイルをSDカードまたは他のアクセス可能な場所にコピーしてみると、正常にアクセスできるはずです。

あなたが開発者の機器を持っている場合、応援はあなたの保証を無効にしません。すみません、他に方法はありません。

21

ルート解除されたAndroid 5.0以降のデバイス上のデバッグ可能なアプリケーションフォルダ(/data/data/package.name/databases/fileとしましょう)からファイルを取得する最も簡単な方法(1つの簡単な手順)は、次のコマンドを使用することです。

adb exec-out run-as package.name cat databases/file > file
12
Alex P.
  1. コマンドプロンプトを開く
  2. ディレクトリーをE:¥Android¥adt-bundle-windows-x86_64-20140702¥adt-bundle-windows-x86_64-20140702¥sdk¥platform-toolsに変更します
  3. 以下のコマンドを入力してください
  4. adb -d Shell
  5. run-as com.your.packagename cat databases/database.db > /sdcard/database.db
  6. cd /sdcardがあることを確認するために、ディレクトリをdatabase.dbに変更します。
  7. adb pull /sdcard/database.dbまたは単にあなたがデバイスからdatabase.dbをコピーすることができます。
11

Eclipseのファイルエクスプローラを使用してください。ウィンドウ=>ビューの表示=>その他... =>ファイルエクスプローラの順に選択します。

もう1つの方法は、adbを介してファイルを取得することです。

adb pull /system/data/data/<yourpackagename>/databases/<databasename> /sdcard
10

私も一度同じ問題を抱えていました。 adbシェルや応援用の端末以外には、Android端末内のファイルに直接アクセスする方法はありません。

ここには02の選択肢があります。

1)

 public void exportDatabse(String databaseName)
   {
     try {
        File sd = Environment.getExternalStorageDirectory();
        File data = Environment.getDataDirectory();

        if (sd.canWrite()) {
            String currentDBPath = "//data//"+getPackageName()+"//databases//"+databaseName+"";
            String backupDBPath = "backupname.db";
            File currentDB = new File(data, currentDBPath);
            File backupDB = new File(sd, backupDBPath);

            if (currentDB.exists()) {
                FileChannel src = new FileInputStream(currentDB).getChannel();
                FileChannel dst = new FileOutputStream(backupDB).getChannel();
                dst.transferFrom(src, 0, src.size());
                src.close();
                dst.close();
            }
        }
    } catch (Exception e) {

    }
}

2)これを試してみてください: https://github.com/sanathp/DatabaseManager_For_Android

4

root - デバイスでは、正しい解決策は次のとおりです。

Open cmd
Change your directory and go into 'Platform tools'
Type 'adb Shell'
su
Press 'Allow' on device
chmod 777 /data /data/data /data/data/*
Open DDMS view in Eclipse/IntelliJ and from there open 'FileExplorer' to get your desired file

元の解決策はうまくいきましたが、chmodは未知のディレクトリを返します。 chmodコマンドを/ data/data/*に変更すると、IntellijのDDMSからdataディレクトリのすべてのサブフォルダにアクセスできるようになりました。私は同じ解決策がEclipse DDMSにも当てはまると思います。

_ update _ だから、私が見つけたのは奇妙だ。私はIntelliJ(Android Device Monitor)でDDMSを使用してNexus 6を実行しています。私は小さなスターターアプリを作りました。このアプリはdata/data/com.example.myapp/filesの.csvファイルにデータを保存します

私が最初にNexus 6でこのファイルにアクセスしようとしたときに、デバイスのルートを設定する必要があることに気付きました。データフォルダを見ることはできましたが、開こうとしてもうまくいきませんでした。他の場所でオンラインで言及されているように、expand +は消えて、その後すぐに再び現れるでしょう(注意してください、応援なしでこれらのフォルダーへのアクセスを許すと主張する解決策があります。私がとにかく根絶したくないかどうかわからない((私はむしろ私の解決策を与えるためにアプリやコマンドプロンプトに頼るよりも手動でそれを行うことができると思います))。私は自分の6を根絶し、DDMSをもう一度試しました。

この時点で、データフォルダが表示され、フォルダを展開してcomを見ることができました。ディレクトリ、しかし私はそれらのどれも開くことができませんでした。私は上記の解決策を発見したときです。最初の指示はこの部分では機能しないでしょう。

chmod 777 /data /data/data /data/data/com.application.pacakage /data/data/com.application.pacakage/*

私が投稿したソリューションを試したのはそのときです。

chmod 777 /data /data/data /data/data/*

その解決策は機能するように見えましたが、特定のフォルダに対してのみです。 myappフォルダを展開できましたが、その中のfilesディレクトリを展開できませんでした。

この時点で、しばらく遊んだ後、これらのワイルドカードエントリを試すのではなく、必要なディレクトリで試してみるのではない理由を考え出しました。

chmod 777 /data /data/data /data/data/com.example.myapp/*

に続く:

chmod 777 /data /data/data /data/data/com.example.myapp/files

これらのコマンドにより、アプリのディレクトリにあるファイルを展開して表示し、.csvファイルが正しく保存されていることを確認できました。

これが誰かに役立つことを願っています。私はこれに何時間も苦労しました!

(これをさらに複雑にするために、奇妙なことに、パーミッションがfilesディレクトリに渡された.csvファイルに渡されませんでした。私のファイルのディレクトリパーミッションread drwxrwxrwxおよび私のlog.csvファイルのパーミッションread -rw-rw --- - ..ちょうどfyi)

4
lol2dubs

Androidからデスクトップにバックアップするには

コマンドラインcmdを開き、次のコマンドを実行します。adb backup -f C:¥Intel¥xxx.ab -noapk your.app.package 。パスワードを入力せずに「データをバックアップする」をクリックしてください。ドライブCのルートに保存しないようにしてください。あなたは否定されるかもしれません。これが私がC:\ Intelに保存した理由です。

* .abファイルを抽出する

  1. ここに行ってダウンロード: https://sourceforge.net/projects/adbextractor/ /
  2. ダウンロードしたファイルを解凍し、解凍したフォルダに移動します。
  3. 独自のファイル名でこれを実行します。 Java -jar abe.jar c:\ Intel\xxx.abを解凍します。c:\ Intel\xxx.tar
3
RonTLV

adb backupは私にはうまくいきませんでしたので、ここに私がしたことがあります(Xiaomi Redmi Note 4X、Android 6.0):
1。 設定>追加設定>バックアップとリセット>ローカルバックアップに移動します
2。画面下部の[バックアップ]をタップします。
3。 [システム]と[アプリ]のチェックマークを外します。
4。アプリ選択画面に移動するには、[アプリ]セルの右側にある詳細表示ボタンをタップします。
5。目的のアプリを選択して[OK]をタップします。
6。バックアップが完了した後、実際のファイルはどういうわけか見つけられる必要があります。私のものは /MIUI/backup/AllBackup/_FOLDER_NAMED_AFTER_BACKUP_CREATION_DATE_ にあります。
7。それから私は この答え / RonTLV の手順に従って、実際にバックアップファイル(私の場合は.bak)をtarに変換します(元の答えからの複製)。
"
a)ここに移動してダウンロードします。 https://sourceforge.net/projects/adbextractor/ /
b)ダウンロードしたファイルを解凍し、解凍したフォルダに移動します。
c)独自のファイル名でこれを実行します。Java -jar abe.jar解凍c:\ Intel\xxx.ab c:\ Intel\xxx.tar
"

1
Russian

簡単な方法の1つは、SDカードにデータベースを作成することです。あなたがあなたの電話を根絶しない限り、あなたは内部メモリのあなたの電話のデータフォルダにアクセスすることができないので。それでは、なぜあなたのデータベースを単にSDカード上に作成しないでください。

さらに、必要に応じて、ルートを必要とせずに既存のデータベースファイルを(内部メモリから)外部メモリにコピーするためのファイルコピーコードを書くこともできます。

1
waqaslam

このdbファイルをEclipseエクスプローラのどこかにコピーすることができ(例:sdcardまたはPC)、sqliteを使用してこのdbファイルにアクセスして更新することができます。

0
Vito

このフォルダにアクセスするには管理者権限が必要です。

だからあなたは2つの選択肢があります: -

  1. お使いのデバイスをルートにして、このフォルダにアクセスしてみてください
  2. エミュレータを使用

pS注:上記の2つのオプションのいずれかを使用している場合は、次の手順に従ってこのフォルダにアクセスできます。

dDMSパースペクティブを開く - >あなたのデバイス - >(右ウィンドウのオプションからFile Explorerを選択)package - > data - > data - > package name - > files

そしてそこからあなたのファイルを引き出すことができます

0
user3829503

ファイルをパブリックフォルダのSD Cardフォルダにコピーしてから、そのファイルをPCにコピーして、sqliteを使用してファイルにアクセスすることもできます。

これは、ファイルをdata/dataからパブリックストレージフォルダにコピーするために使用できるコードです。

private void copyFile(final Context context) {
    try {
        File sd = Environment.getExternalStorageDirectory();
        File data = Environment.getDataDirectory();

        if (sd.canWrite()) {
            String currentDBPath =
                    context.getDatabasePath(DATABASE_NAME).getAbsolutePath();

            String backupDBPath = "data.db";

            File currentDB = new File(currentDBPath);
            File backupDB = new File(sd, backupDBPath);

            if (currentDB.exists()) {
                FileChannel src = new FileInputStream(currentDB).getChannel();
                FileChannel dst = new FileOutputStream(backupDB).getChannel();
                dst.transferFrom(src, 0, src.size());
                src.close();
                dst.close();
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

マニフェスト:

<uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission Android:name="Android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission Android:name="Android.permission.WRITE_INTERNAL_STORAGE" />
<uses-permission Android:name="Android.permission.READ_INTERNAL_STORAGE" />
0
live-love

質問は:Androidデバイスのデータ・データ・データフォルダへのアクセス方法?


AndroidデバイスがBluestacksの場合* Root Browser APKはdata/data /を表示します。


からルートブラウザをダウンロードしてみてください。https://apkpure.com/root-browser/com.jrummy.root.browserfree


ファイルがテキストファイルの場合は、[名前を付けて開く]、[テキストファイル]、[名前を付けて開く]、[RBテキストエディタ]の順にクリックします。

あなたはそのようなシグルファイルをダウンロードすることができます:

adb exec-out run-as debuggable.app.package.name cat files/file.mp4 > file.mp4

あなたがダウンロードする前に、あなたはあなたのApp-Directoryのファイル構造を見たくないかもしれません。そのためには、次の手順を実行してください。

adb Shell
run-as com.your.packagename 
cd files
ls -als .

Android-Studio 道Shahidul言及( https://stackoverflow.com/a/44089388/1256697 )も動作します。メニューにDeviceFile Explorerオプションが表示されない場合は、必ず、Android Studioで/ Android-Directoryを開いてください。例えば。反応ネイティブのユーザは、/ ios-Directoryと同じレベルに、このプロジェクトフォルダ内部を持っています。

0
suther