373

私はアプリを開発していますが、データベース*.dbがに表示されることを知っていますdata/data/com.****.***

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

しかし、Androidフォンでこのファイルにアクセスできません。
私はそれをグーグルで検索しました、そしてそれは私がそれをするために私の電話を根絶する必要があると言います、しかし私はそれをしたくありません。

「 root化せずにdata/data/.....」Android携帯のディレクトリにアクセスするにはどうすればよいですか?

ルート権限を取得せずにディレクトリのユーザー権限を変更できますdata/data.....か?

4

18 に答える 18

430

携帯電話でファイルに直接アクセスすることは困難ですが、ファイルをコンピューターにコピーして、好きなことを実行できる場合があります。ルート権限を取得しない場合、2つのオプションがあります。

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

    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、バックアップを復元できます。

于 2013-07-26T08:38:41.073 に答える
168

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

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

ルート権限を取得されていないデバイスでデバッグモードで実行されるパッケージのみを展開できます。

AndroidStudio3.0で実行された手順

于 2017-05-20T18:24:29.577 に答える
59

ルートエクスプローラーアプリを使用してデータベースをフェッチすることもできます。それがうまくいかない場合は、これを試すことができます:

  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」を開いて目的のファイルを取得します

この後、ルート化されたデバイス上のファイルを閲覧できるようになります。

于 2012-10-22T07:17:58.373 に答える
22

上記のいずれかを実行するには(つまり、電話自体から保護されたフォルダにアクセスするには)、rootが必要です。(これには、/ dataフォルダーのmount-permissionsの変更とアクセスが含まれます)

ルートがないと、コードを介してアプリケーション内から以外/dataは、直接読み取りにアクセスすることはできません。そのため、そのファイルをsdcardまたはアクセス可能な場所にコピーしてみると、通常どおりにアクセスできるはずです。

開発者デバイスをお持ちの場合、root化しても保証が無効になることはありません。申し訳ありませんが、他に方法はありません。

于 2012-10-22T07:03:47.160 に答える
13
  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をデバイスからコピーできます。
于 2014-09-11T10:44:43.360 に答える
13

/data/data/package.name/databases/fileルート化されていないAndroid5.0以降のデバイスでデバッグ可能なアプリケーションフォルダー(たとえば)からファイルをプルする最も簡単な方法(1つの簡単な手順)は、次のコマンドを使用することです。

adb exec-out run-as package.name cat databases/file > file
于 2015-08-07T15:07:34.017 に答える
10

Eclipseでファイルエクスプローラーを使用します。[ウィンドウ]=>[ビューの表示]=>[その他...]=>[ファイルエクスプローラー]を選択します。

別の方法は、adbを介してファイルをプルすることです。

adb pull /system/data/data/<yourpackagename>/databases/<databasename> /sdcard
于 2012-10-22T07:05:21.233 に答える
7

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

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

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

  1. ここにアクセスしてダウンロードしてください:https ://sourceforge.net/projects/adbextractor/
  2. ダウンロードしたファイルを解凍し、解凍したフォルダーに移動します。
  3. 独自のファイル名でこれを実行します:java -jar abe.jar unpack c:\ Intel \ xxx.ab c:\ Intel \ xxx.tar
于 2017-01-04T19:44:16.163 に答える
4

このフォルダにアクセスするには、管理者権限が必要な場合があります。

したがって、2つのオプションがあります:-

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

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

DDMSパースペクティブを開く->デバイス->(右側のウィンドウオプションからファイルエクスプローラーを選択)パッケージ->データ->データ->パッケージ名->ファイルを選択

そこからファイルをプルアップできます

于 2014-07-11T13:02:56.777 に答える
4

私も一度同じ問題を抱えていました。adbシェルまたはroot化デバイスを除いて、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

于 2015-08-23T18:30:00.047 に答える
4

ルート権限を取得されたデバイスでは、正しい解決策は次のとおりです。

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からデータディレクトリ内のすべてのサブフォルダーにアクセスできるようになりました。同じ解決策がEclipseDDMSにも当てはまると思います。

更新 だから、私が見つけたものは奇妙です。IntelliJ(Androidデバイスモニター)でDDMSを使用してNexus6を実行しています。小さなスターターアプリを作成しました。このアプリは、データをdata / data / com.example.myapp/filesの.csvファイルに保存します

Nexus 6でこのファイルに最初にアクセスしようとしたとき、デバイスをルート化する必要があることがわかりました。データフォルダーは表示されましたが、開こうとしても機能しませんでした。他の場所でオンラインで言及されているように、expand +は消えて、その後すぐに再表示されます(ルート化せずにこれらのフォルダーへのアクセスを許可すると主張するソリューションがWeb上にあり、手遅れになるまでそれらを見つけられませんでした。とにかくrootにしたくないかどうかわからない((解決策を提供するためにアプリやコマンドプロンプトに依存するよりも手動で実行できる方がいい)))。私は自分の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フォルダーを展開できましたが、その中のファイルディレクトリを展開できませんでした。

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

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

に続く:

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

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

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

(これをさらに少し複雑にするために、奇妙なことに、アクセス許可はファイルディレクトリに渡された.csvファイルに渡されませんでした。私のファイルディレクトリのアクセス許可はdrwxrwxrwxを読み取り、私のlog.csvファイルのアクセス許可は-rw-rwを読み取ります--- -..ちょうどfyi)

于 2015-10-24T23:54:07.427 に答える
4

次のような単一ファイルをダウンロードできます。

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

ダウンロードする前に、App-Directoryのファイル構造を確認したくない場合があります。THelperこれを行うには、上記の次の手順を実行します。

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

前述のAndroid-Studioの方法Shahidulhttps://stackoverflow.com/a/44089388/1256697)も機能します。メニューにオプションが表示されない場合DeviceFile Explorer:AndroidStudioで/android-Directoryを開いてください。たとえば、react-nativeユーザーは、これをProject-Folderの/ios-Directoryと同じレベルに配置します。

于 2018-08-10T06:11:10.873 に答える
2

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 unpack c:\ Intel \ xxx.ab c:\ Intel \ xxx.tar
"

于 2018-06-05T23:54:54.917 に答える
1

簡単な方法の1つは、SDカード上にデータベースを作成することです。電話をルート化しない限り、内部メモリ内の電話のデータフォルダにアクセスできないためです。では、SDカード上にデータベースを作成してみませんか。

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

于 2012-10-22T07:14:56.220 に答える
0

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

于 2013-07-11T08:36:06.010 に答える
0

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

データ/データからパブリックストレージフォルダにファイルをコピーするために使用できるコードは次のとおりです。

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" />
于 2017-12-18T20:51:56.057 に答える
0

SQLliteデータベースはユーザーの電話に保存されており、パスの下に隠れています。

/Data/Data/com.companyname.AppName/File/

ここには2つのオプションがあります。

  1. あなたはあなたがあなたの隠しdb3ファイルを見るためにアクセスすることができるようにあなたの電話を根絶することができます
  2. これは解決策ではなく、回避策です。'select'ステートメントを使用してデータベーステーブルを表示するテストページを作成してみませんか。
于 2019-12-12T20:20:44.463 に答える
-1

問題は、Androidデバイスのデータにアクセスする方法を教えてください。


android-deviceがBluestacksの場合*ルートブラウザAPKはdata/data/を表示します。


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


ファイルがテキストファイルの場合は、[名前を付けて開く]、[テキストファイル]、[名前を付けて開く]、[RBテキストエディタ]をクリックする必要があります

于 2016-03-16T05:39:34.363 に答える