Android - Menarik perangkat android database SQlite

101

Saya telah mencari di mana-mana dan saya tidak dapat menemukan jawaban yang tepat atau tutorial tentang bagaimana, jika memungkinkan, untuk melakukan ini.

apakah mungkin untuk menarik database perangkat Android dengan cara apa pun tanpa harus melakukan root? saya hanya perlu mengekstrak data itu dengan cara apa pun untuk mengumpulkannya di komputer saya, jadi bagaimana saya bisa melakukan ini? apakah saya harus memprogram ulang aplikasi atau metode apa pun yang Anda ketahui, tetapi ingat tanpa me-rooting perangkat. Terima kasih

DeX03
sumber
berikut adalah solusi yang bisa diterapkan: stackoverflow.com/a/29257875/291427
kmalmur
1
stackoverflow.com/questions/13006315 Tarik db tanpa rooting
Naveen Prince P

Jawaban:

78

Cara umum untuk mencapai apa yang Anda inginkan adalah dengan menggunakan perintah tarik ADB.

Cara lain yang saya sukai dalam banyak kasus adalah menyalin database dengan kode ke kartu SD:

try {
    File sd = Environment.getExternalStorageDirectory();

    if (sd.canWrite()) {
        String currentDBPath = "/data/data/" + getPackageName() + "/databases/yourdatabasename";
        String backupDBPath = "backupname.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) {

}

Jangan lupa untuk mengatur izin untuk menulis di SD dalam manifes Anda, seperti di bawah ini.

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
KarlKarlsom
sumber
1
baik saya akan menggunakan ini pada tab samsung galaxy yang tidak memiliki kartu SD jadi bagaimana cara melakukannya di sana?
DeX03
dan, saya harus menggunakan double //?
DeX03
Ya, ini karena / adalah sebagai karakter string khusus. // dalam "//" Anda akan menghasilkan /.
KarlKarlsom
4
Daripada membangun jalur database, SQLiteDatabase memiliki getPathmetode.
Akankah
Jawaban yang brilian. sangat cerdas, berguna dan sederhana.
Gundu Bandgar
179

Jika perangkat Anda menjalankan Android v4 atau lebih tinggi, Anda dapat menarik data aplikasi, termasuk database-nya, tanpa root dengan menggunakan adb backupperintah, kemudian mengekstrak file cadangan dan mengakses database sqlite.

Pertama, cadangkan data aplikasi ke PC Anda melalui kabel USB dengan perintah berikut, ganti app.package.namedengan nama paket aplikasi yang sebenarnya.

adb backup -f ~/data.ab -noapk app.package.name

Ini akan meminta Anda untuk "membuka kunci perangkat Anda dan mengonfirmasi operasi pencadangan". Jangan berikan kata sandi untuk enkripsi cadangan , jadi Anda dapat mengekstraknya nanti. Klik tombol "Cadangkan data saya" di perangkat Anda. Layar akan menampilkan nama paket yang Anda cadangkan, lalu menutup sendiri setelah berhasil diselesaikan.

File yang dihasilkan data.abdi folder rumah Anda berisi data aplikasi dalam format cadangan android. Untuk mengekstraknya gunakan perintah berikut:

dd if=data.ab bs=1 skip=24 | openssl zlib -d | tar -xvf -

Jika di atas berakhir dengan openssl:Error: 'zlib' is an invalid command.kesalahan, coba yang di bawah ini.

dd if=data.ab bs=1 skip=24 | python -c "import zlib,sys;sys.stdout.write(zlib.decompress(sys.stdin.read()))" | tar -xvf -

Hasilnya adalah apps/app.package.name/folder yang berisi data aplikasi, termasuk database sqlite.

Untuk lebih jelasnya Anda dapat memeriksa posting blog asli .

Sergei
sumber
9
Bagi yang belum mengompilasi zlib tanpa zlib, silakan lihat jawabannya di blog.shvetsov.com/2013/02/… untuk mengekstrak datanya dengan python.
ingh. Pagi
2
Untuk pengguna Windows di mana perintah unpack tidak tersedia, Anda dapat menggunakan Aplikasi Java "Android Backup Extractor" ( sourceforge.net/projects/adbextractor ). Lihat forum.xda-developers.com/showthread.php?t=2011811 untuk perintah-perintah untuk mengekstrak file .ab.
lalitm
7
di MacBook Pro saya, saya mendapatkan pesan openssl:Error: 'zlib' is an invalid command., yang saya tanggapi dengan dd if=data.ab bs=1 skip=24 | python -c "import zlib,sys;sys.stdout.write(zlib.decompress(sys.stdin.read()))" | tar -xvf -NAMUN, setelah itu menunjukkan 17+0 records in17+0 records out17 bytes transferred in 0.000064 secstidak ada bukti apa pun yang telah dilakukan ke folder tersebut. Karena hanya 17 byte, saya berasumsi bahwa perintah itu juga gagal. Saya pikir itu buruk bagaimana saya tidak bisa adb pulldatabase dari aplikasi debug !!
Seseorang di suatu tempat
12
tip pro: cadangan ini tidak akan berfungsi jika manifest aplikasi menunjukkanandroid:allowBackup="false"
Seseorang di suatu tempat
9
Saya openssldi Mac OS X tidak mendukung zlibperintah, jadi saya kembali satu dengan minuman: brew reinstall openssl. Ini tidak akan menggantikan sistem Anda openssl. Oleh karena itu saya memodifikasi perintah PATH hanya untuk sesi saat ini: export PATH=/usr/local/opt/openssl/bin:$PATHsetelah itu berhasil melakukan perintah dari jawaban ini.
Aleks N.
69

Untuk aplikasi yang dapat di - debug 1 pada perangkat yang tidak di-rooting , Anda dapat menggunakan perintah berikut:

adb shell run-as package.name chmod 666 /data/data/package.name/databases/file
adb pull /data/data/package.name/databases/file

Contoh:

adb shell run-as com.app chmod 666 /data/data/com.app/databases/data.db
adb pull /data/data/com.app/databases/data.db

Setel PATH adb untuk Enviroment Variables atau gunakan perintah cd ke android sdk folder platform-tools.

Contoh:

cd /folder/android-sdk/platform-tools/

lalu gunakan perintah di atas


1 Perhatikan bahwa sebagian besar aplikasi di Play Store tidak dapat di-debug karena memerlukan pengaturan tanda yang dapat di - debug di manifes.

Lam Vinh
sumber
8
Setelah saya mengganti package.namedengan paket aplikasi, kesalahan dikembalikan:run-as: Package 'com.my.app' is unknown
Someone Somewhere
3
Sepertinya ini tidak berfungsi untuk semua ponsel. Bekerja untuk Nexus 4, tidak berfungsi untuk SGS4 misalnya.
Roman Minenok
2
Di mana file db disimpan?
Vojtěch Pešek
3
Ini dulu berfungsi untuk saya, tetapi saya tidak bisa membuatnya berfungsi pada Nexus 7 saya yang telah diperbarui ke Android 5. Adakah yang bisa mengonfirmasi bahwa ini berfungsi di Android 5?
treesAreEverywhere
15
Berikut adalah retasan untuk Android 5 (Lollipop) adb shell "run-as [package_name] chmod -R 777 / data / data / [package_name] / databases" adb shell "mkdir -p / sdcard / tempDB" adb shell "cp -r / data / data / [package_name] / databases / / sdcard / tempDB /. " adb pull sdcard / tempDB /. adb shell "rm -r / sdcard / tempDB / *"
Rubin Yoo
55

Sebagian besar jawaban di sini jauh lebih rumit daripada yang seharusnya. Jika Anda hanya ingin menyalin database aplikasi Anda dari ponsel ke komputer, maka Anda hanya perlu perintah ini:

adb -d shell "run-as your.package.name cat databases/database.name" > target.sqlite

Yang Anda perlukan untuk mengisi perintah di atas adalah nama paket aplikasi Anda, apa nama database dan secara opsional apa / di mana Anda ingin database disalin.

Harap dicatat bahwa perintah khusus ini hanya akan berfungsi jika Anda hanya memiliki satu perangkat yang terhubung ke komputer Anda. The -dparameter berarti bahwa perangkat hanya terhubung akan ditargetkan. Tetapi ada parameter lain yang dapat Anda gunakan sebagai gantinya:

  • -e akan menargetkan satu-satunya emulator yang berjalan
  • -s <serialnumber> akan menargetkan perangkat dengan nomor seri tertentu.

Xaver Kapeller
sumber
Bagaimana saya bisa membuka file ini?
Jehad
@Jehad: Saya punya masalah yang sama. Saya menemukan cara ini dan berhasil untuk saya. Instal SSHDroid di ponsel Anda adb -d shell "run-as your.package.name cat databases/database_name.db > /mnt/sdcard/database_name.db" , SSHDroidmulai FileZilla dan sambungkan ke ponsel Anda melalui protokol SFTP. Setel / mnt / sdcard sebagai direktori remote default.
Zoltán Süle
Jawaban termudah saat Anda ingin mendapatkan database aplikasi Anda sendiri. Dua tambahan: 1) jika Anda tidak yakin dengan nama database Anda, Anda dapat menggunakan perintah ls untuk membuat daftar file di folder database ( adb -d shell "run-as your.package.name ls databases") dan 2) Anda mungkin ingin mendapatkan file terkait lainnya bersama dengan database, di kasus saya mengekstrak file -smh dan -wal adalah satu-satunya cara agar DB Browser untuk SQLite membuka database
Ronan
36

Menggunakan Android Studio 3.0 atau versi yang lebih baru, dimungkinkan untuk menarik database (juga preferensi bersama, direktori cache, dan lainnya) jika aplikasi berjalan dalam mode debug pada perangkat yang tidak di-rooting.

Untuk menarik database menggunakan android studio ikuti langkah-langkah berikut.

  1. Klik View > Tool Windows > Device File Explorer .
  2. Perluas / data / data / node [nama-paket] .

Langkah-langkah diikuti di Android Studio 3.0

Shahidul
sumber
Terima kasih. Mengunduh file dari emulator, tetapi tidak bisa mendapatkannya dari Galaxy S4 yang tidak di-root.
CoolMind
Bisakah Anda menarik database dari aplikasi apa pun, atau hanya dari aplikasi Anda sendiri?
cinta hidup
Aplikasi apa pun kecuali prasyaratnya adalah aplikasi harus dapat di-debug.
Shahidul
6
 adb shell "run-as [package.name] chmod -R 777 /data/data/[package.name]/databases" 
 adb shell "mkdir -p /sdcard/tempDB" 
 adb shell "cp -r /data/data/[package.name]/databases/ /sdcard/tempDB/." 
 adb pull sdcard/tempDB/ . 
 adb shell "rm -r /sdcard/tempDB/*"
SaundersB
sumber
5

Untuk Ubuntu (tidak hanya?):

lihat Sergeis Answer tetapi alih-alih openssl gunakan zlib-flate:

kucing appbackup.ab | (dd bs = 24 hitung = 0 lompat = 1; kucing) | zlib-flate -uncompress> appbackup.tar

Jika tidak, openssl mungkin akan melempar:

openssl: Kesalahan: 'zlib' adalah perintah yang tidak valid.

karena openssl tidak dikompilasi dengan dukungan zlib di Ubuntu

Murmel
sumber
1

Karena, tidak ada yang benar-benar berhasil untuk saya. Saya membuat skrip windows BATCH berdasarkan jawaban lain yang digabungkan bersama. Semoga membantu seseorang. Cukup gunakan: backupDatabase <PackageName> <ApplicationName> [TargetDirectory]. Ini menggunakan metode cadangan Sergei dan Android Backup Extractor .

@echo off

if [%1]==[] goto usage
if [%2]==[] goto usage
if NOT [%4]==[] goto usage

@echo Processing: preparations
set PACKAGE=%1
set APPLICATION_NAME=%2
set TARGET_DIR=%cd%
IF NOT "%~3"=="" set TARGET_DIR=%3

set PATH_ADB="c:\Program Files (x86)\Android\android-studio\sdk\platform-tools"
set PATH_ABE="c:\Programs\android-backup-extractor-20140630-bin"
set PATH_7Z="c:\Program Files\7-Zip"

@echo Processing: backup
%PATH_ADB%\adb.exe backup -f %TARGET_DIR%\%APPLICATION_NAME%\%APPLICATION_NAME%.ab -noapk %PACKAGE%

@echo Processing: unpack
java -jar %PATH_ABE%\abe.jar unpack %TARGET_DIR%\%APPLICATION_NAME%\%APPLICATION_NAME%.ab %TARGET_DIR%\%APPLICATION_NAME%\%APPLICATION_NAME%.ab.tar

@echo Processing: extract
cd %TARGET_DIR%\%APPLICATION_NAME%
%PATH_7Z%\7z.exe e %APPLICATION_NAME%.ab.tar "apps\%PACKAGE%\db\%APPLICATION_NAME%"

@echo Processing: cleaning
del %APPLICATION_NAME%.ab
del %APPLICATION_NAME%.ab.tar
goto :eof

:usage
@echo.Pull out SQLite database file from your android device.
@echo.Needs: - connected device
@echo.       - device enable backup.
@echo.       - application enable backup
@echo.       - application in debug mode
@echo.       - installed Android Backup Extractor 
@echo.       - installed command line TAR extractor (7z, ...)
@echo.Does NOT need: root device
@echo.
@echo.Uses: - ADB backup (set PATH_ADB)
@echo.      - Android Backup Extractor (http://sourceforge.net/projects/adbextractor/) (set PATH_ABE)
@echo.      - Extract TAR container, uses 7z (set PATH_7Z)
@echo.
@echo.Usage: backupDatabase ^<PackageName^> ^<ApplicationName^> [TargetDirectory]
@echo.Example: backupDatabase com.foo.example ExampleApp 
@echo Example: backupDatabase com.foo.example ExampleApp workspace\AndroidProjects\Example
exit /B 1
Wooff
sumber
1

Anda dapat dengan mudah mengekstrak file sqlite dari perangkat Anda (root tidak perlu)

  1. Buka Folder SDK
  2. cd platform-tools
  3. mulai adb

    cd / sdk / platform-tools ./adb shell

    Kemudian ketik perintah berikut di terminal

    ./adb -d shell "run-as com.your_packagename cat /data/data/com.your_packagename/databases/jokhanaNepal> /sdcard/jokhana.sqlite"

    Untuk misalnya

    ./adb -d shell "run-as com.yuvii.app cat /data/data/com.yuvii.app/databases/jokhanaNepal> /sdcard/jokhana.sqlite"

yubaraj poudel
sumber
1

Jika Anda mencoba melakukannya di android 6 mintalah izin dan gunakan kode jawaban dari pertanyaan ini

if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { 
    ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, STORAGE_PERMISSION_RC); 
    return; 
} 

Setelah itu diberikan

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if (requestCode == STORAGE_PERMISSION_RC) {
        if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            //permission granted  start reading or writing database
        } else { 
            Toast.makeText(this, "No permission to read external storage.", Toast.LENGTH_SHORT).show();
        } 
    } 
} 
Rodolfo Abarca
sumber
1

Atau Anda dapat menggunakan perpustakaan saya Ultra Debugger . Ini memungkinkan untuk mengunduh database sebagai file atau mengedit nilai langsung di browser. Tidak perlu root, sangat mudah digunakan.

BArtWell
sumber
1

Di Mac (TIDAK diperlukan root)

1. Go to platform-tools folder.
2) Run following command in terminal.

./adb -d shell "run-as your.package.name cat databases/database.sqlite" > database.sqlite

Ini akan menyalin file sqlite di folder alat platform.

Yogesh Suthar
sumber
Ini sepertinya hanya berfungsi jika aplikasi dikompilasi untuk debugging.
David Berry
@DavidBerry Ya, itu akan menarik db jika dikompilasi untuk debugging, kalau tidak Anda bisa menarik db aplikasi apa pun. Dan itu akan menjadi masalah keamanan aplikasi yang serius. :)
Yogesh Suthar
0
 > is it possible to pull in any way a database of an Android device without having to root it? 

ya jika aplikasi android Anda membuat salinan file dari database yang dapat diakses oleh semua orang.

android melindungi data pribadi aplikasi sehingga tidak terlihat / dapat diakses oleh aplikasi lain. database adalah data pribadi. aplikasi Anda tentu saja dapat membaca file database sehingga dapat melakukan penyalinan file ke beberapa file yang terlihat oleh publik.

k3b
sumber
0

Di perangkat yang di-rooting, Anda dapat:

// check that db is there
>adb shell
# ls /data/data/app.package.name/databases
db_name.sqlite // a custom named db
# exit
// pull it
>adb pull /data/app.package.name/databases/db_name.sqlite
yanchenko
sumber
Saya tidak 100% yakin tetapi saya pikir sebelum penarikan diperlukan> su dan beri izin
pavol.franek
0

Berdasarkan jawaban yang diberikan oleh Lam Vinh, berikut ini adalah file batch sederhana yang berfungsi untuk saya pada Nexus 7 generasi pertama saya. Ini meminta pengguna untuk memasukkan nama paket dan kemudian nama database (tanpa ekstensi .sqlite) dan meletakkannya di c: \ temp. Ini mengasumsikan Anda memiliki sdk Android yang disetel dalam variabel lingkungan.

@echo off
cd c:\temp\

set /p UserInputPackage= Enter the package name: 
set /p UserInputDB= Enter the database name: 

@echo on
adb shell "run-as %UserInputPackage% chmod 666 /data/data/%UserInputPackage%/databases/%UserInputDB%.sqlite"
adb pull /data/data/%UserInputPackage%/databases/%UserInputDB%.sqlite
@echo off
pause
chutcher
sumber
0

Jika Anda menggunakan Android 4.0 atau lebih tinggi, dan Anda menggunakan mac , maka berikut adalah skrip ruby ​​yang akan menyimpan konten aplikasi Anda ke desktop. Saya membayangkan ini juga akan berfungsi di Ubuntu, meskipun saya tidak mengujinya.

puts "enter your package name"
package_name = gets.chomp
puts "press the 'Back up my data' button on your device"
`adb backup -f ~/Desktop/data.ab -noapk #{package_name}`
puts "press enter once once the 'Backup finished' toast has appeared"
gets.chomp
puts "extracting..."
`dd if=data.ab bs=1 skip=24 | openssl zlib -d | tar -xvf -`

untuk menjalankan -> ruby ​​your_ruby_file_name.rb

Skrip ini hanya "jalur bahagia", jadi pastikan perangkat Anda terhubung dan adb telah ditambahkan ke profil Anda.

Swifty McSwifterton
sumber
0

Saya memberikan solusi lengkap untuk "menyimpan" dan "memulihkan" database aplikasi ke / dari penyimpanan internal (bukan ke PC dengan adb).

Saya telah melakukan dua metode, satu untuk menyimpan dan lainnya untuk memulihkan database. Gunakan metode ini di akhir onCreate () di MainActivity (satu atau yang lain jika Anda ingin menyimpan atau memulihkan database).

simpan database ke penyimpanan internal:

void copyDatabase (){
        try {
            final String inFileName = "/data/data/<pakage.name>/databases/database.db";
            final String outFileName = Environment.getExternalStorageDirectory() + "database_backup.db";
            File dbFile = new File(inFileName);
            FileInputStream fis = new FileInputStream(dbFile);


            Log.d(TAG, "copyDatabase: outFile = " + outFileName);

            // Open the empty db as the output stream
            OutputStream output = new FileOutputStream(outFileName);

            // Transfer bytes from the inputfile to the outputfile
            byte[] buffer = new byte[1024];
            int length;
            while ((length = fis.read(buffer)) > 0) {
                output.write(buffer, 0, length);
            }

            // Close the streams
            output.flush();
            output.close();
            fis.close();
        }catch (Exception e){
            Log.d(TAG, "copyDatabase: backup error");
        }
    }

pulihkan database dari penyimpanan internal:

void restoreDatabase (){
        try {
            final String inFileName = Environment.getExternalStorageDirectory() + "database_backup.db";
            final String outFileName = "/data/data/<package.name>/databases/database.db";
            File dbFile = new File(inFileName);
            FileInputStream fis = new FileInputStream(dbFile);

            Log.d(TAG, "copyDatabase: outFile = " + outFileName);

            // Open the empty db as the output stream
            OutputStream output = new FileOutputStream(outFileName);

            // Transfer bytes from the inputfile to the outputfile
            byte[] buffer = new byte[1024];
            int length;
            while ((length = fis.read(buffer)) > 0) {
                output.write(buffer, 0, length);
            }

            // Close the streams
            output.flush();
            output.close();
            fis.close();
        }catch (Exception e){
            Log.d(TAG, "copyDatabase: backup error");
        }
    }
Kubus Digital
sumber
0

Itu selalu lebih baik jika semuanya otomatis, itulah mengapa saya menulis skrip python sederhana untuk menyalin file db dari perangkat menggunakan ADB. Ini menghemat banyak waktu pengembangan jika Anda sering melakukannya.

Hanya berfungsi dengan aplikasi yang dapat di - debug jika perangkat Tidak di-root.

Berikut ini tautan ke intinya.

Jalankan sebagai: python copyandroiddbfile.py

import sys
import subprocess
import re

#/
# Created by @nieldeokar on 25/05/2018.
#/

# 1. Python script which will copy database file of debuggable apps from the android device to your computer using ADB.
# 2. This script ask for PackageName and DatabaseName at runtime.
# 3. You can make it static by passing -d at as command line argument while running script and setting defaults in following way.
# 4. Edit script and change the values of varialbe packageName and dbName to debuggable app package name and database name then
# run script as : python Copydbfileandroid.py -d 

useDefaults = False


def checkIfPackageInstalled(strSelectedDevice) :

    packageName = 'com.nileshdeokar.healthapp.debug'
    dbName = 'healthapp.db'


    if not useDefaults : 
        print('Please enter package name : ')
        packageName = raw_input()

    packageString = 'package:'+packageName

    try:
        adbCheckIfPackageInstalledOutput = subprocess.check_output('adb -s ' + strSelectedDevice + ' shell pm list packages | grep -x '+ packageString, shell=True)
    except subprocess.CalledProcessError as e:
                print "Package not found"
                return


    if packageString.strip() == adbCheckIfPackageInstalledOutput.strip() : 
        if not useDefaults : 
            print('Please enter db name : ')
            dbName = raw_input()

        adbCopyDbString = 'adb -s '+strSelectedDevice + ' -d shell \"run-as '+packageName+' cat /data/data/'+packageName+'/databases/'+ dbName +'\" > '+dbName

        try:
            copyDbOp = subprocess.check_output(adbCopyDbString,shell=True)
        except subprocess.CalledProcessError as e:
                return

        if "is not debuggable" in copyDbOp :
            print packageString + 'is nto debuggable'

        if copyDbOp.strip() == "":
            print 'Successfully copied '+dbName + ' in current directory'

    else :
        print 'Package is not installed on the device'



defaultString = "-d"
if len(sys.argv[1:]) > 0 and sys.argv[1] == defaultString :
        useDefaults = True

listDevicesOutput = subprocess.check_output("adb devices", shell=True)
listDevicesOutput = listDevicesOutput.replace("List of devices attached"," ").replace("\n","").replace("\t","").replace("\n\n","")

numberofDevices = len(re.findall(r'device+', listDevicesOutput))

connectedDevicesArray = listDevicesOutput.split("device")   
del connectedDevicesArray[-1] 


strSelectedDevice = ''
if(numberofDevices > 1) :
    print('Please select the device : \n'),

    for idx, device in enumerate(connectedDevicesArray):
        print idx+1,device

    selectedDevice = raw_input()

    if selectedDevice.isdigit() :
        intSelected = int(selectedDevice)
        if 1 <= intSelected <= len(connectedDevicesArray) :
            print 'Selected device is : ',connectedDevicesArray[intSelected-1]
            checkIfPackageInstalled(connectedDevicesArray[intSelected-1])
        else :
            print 'Please select in range'
    else : 
        print 'Not valid input'

elif numberofDevices == 1 :
    checkIfPackageInstalled(connectedDevicesArray[0])
elif numberofDevices == 0 :
    print("No device is attached")
Nilesh Deokar
sumber
-1

Jika Anda ingin file database Anda

Lihat DDMS> Penjelajahan file

temukan file db Anda dari nama paket Anda

kemudian Klik tarik file dari perangkat (Hanya perangkat yang di-rooting)

MAC
sumber
3
ini dapat dilakukan tetapi pada perangkat yang di-rooting, yang merupakan inti dari pertanyaan saya, bagaimana melakukannya pada perangkat yang tidak di-root
DeX03
1
ini tidak berfungsi pada perangkat yang tidak di-rooting. Jawaban Anda harus menyatakan itu.
tony9099