0

私はアンドロイド開発にまったく慣れていません。現在、SQLiteOpenHelper を拡張するクラスを使用してデータベースを作成しようとしています。データが Nexus 7 (アプリケーションのテストに使用しているデバイス) のどこかに保存されていることは確かですが、データベースへのパスが見つかりません。

他の同様の質問を探してみましたが、すべての回答はdata/data/com.example.projet_name/databases/database_nameでデータベースを見つけることを示していますが、デバイスにそのようなパスがありません。

問題が何であるかについてのアイデアはありますか?それとも、私が探すべき他の道があるのでしょうか?

御時間ありがとうございます。

編集済み:

以前の投稿から私のコードを見つけてください

アプリケーションを実行すると、次のエラーが表示されます。何らかの形で役立つことを願っています。

07-17 08:28:20.130: E/libgps(486): LIBGPS: Cannot communicate (write) with a GPSD
07-17 08:28:20.130: E/libgps(486): IPC Communication Error, /tmp/11862727/customers/Asustek/Tabletandroid/../../../proprietary/deliverables/android/gps_interface/../gps_interface/gpsi_client/GpsiClient.cpp:1178 agps_ril_update_network_state
4

2 に答える 2

0

デバイス thn からアプリケーション パッケージに保存されているデータベースを取得しようとしている場合、デバイス /data/data/app packagename/databases/ から直接アクセスすることはできません。 helperclass bt direct export nt poss AFAIK を使用してアクセスおよび変更できます。 .. bt エミュレータから u cn gt

ここに画像の説明を入力

アプリケーションパッケージからSDカード内のデータベースをエクスポートする場合

これを試して

private void copyFromDataPackgeToSdCard() throws IOException {
    try {
        File sdCard = Environment.getExternalStorageDirectory();
        File appDataDir = Environment.getDataDirectory();
        if (sdCard.canWrite()) {
            String currentDBPath = "//data//" + getPackageName()
                    + "//databases//"
                    + DatabaseImplementation.DATABASE_NAME;
            String backupDBPath = DatabaseImplementation.DATABASE_NAME;
            File currentDatabase = new File(appDataDir, currentDBPath);
            File backupDatabase = new File(sdCard, backupDBPath);

            if (currentDatabase.exists()) {
                FileChannel src = new FileInputStream(currentDatabase)
                        .getChannel();
                FileChannel dst = new FileOutputStream(backupDatabase)
                        .getChannel();
                dst.transferFrom(src, 0, src.size());
                src.close();
                dst.close();
            }
        }
    } catch (Exception e) {
        Log.e("copyFromDataPackgeToSdCard", e.getMessage());
    }
}
于 2013-07-17T06:57:37.693 に答える
0

データベース名をフルパスとして設定するのはどうですか:

String DATABASE_NAME = "/data/data/"+packageName+"db.db";

またはあなたのデータベースをSDカードに入れます:

String DATABASE_NAME= Environment.getExternalStorageDirectory()+packageName+"db.db";

コードで dbPath を渡します。

public DatabaseImplementation(Context context) 
{
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
于 2013-07-17T06:53:53.067 に答える