2011-12-21 12 views
2

に自分のアプリケーションのデータベースを見ることができます。 私の質問は、私は自分のアプリケーションで作成したデータベースを見ることができる方法ですか?は、どのように私は私の非根ざしネクサス電話で(上のデバッグと)私のアンドロイドアプリケーションがインストールされている非根ざし電話

ありがとうございます。

+0

http://stackoverflow.com/questions/2149438/tool-to-see-android-database-tables-and-data – Emran

答えて

1

私はこれに見てきたし、残念ながらこれを行うには実用的な方法はありません。あなたは非根ざし電話上のファイルへのアクセスを得ることができないためです。

これは私がデータベースにアクセスする必要があるときにいつでも簡単にデータベースへのアクセスを取得しても、その場で変更を加えると、それはアプリに影響を与える方法を見ることができるので、私はちょうどエミュレータを起動する理由です。あなたがプログラム的に外部(SDカード)に内蔵携帯電話のメモリからのDBファイル(複数可)をコピーすることができ、デバッグ目的のために

0

。彼らはちょうど結局のファイルです

1

あなたはそれを行うことはできませんが、あなた自身のアプリケーションであれば、実際にあなたのデータベースファイルをsdカードにエクスポートする退屈な方法を実行することができます。 that ..

"/data/net.rejinderi.yourpackagehere/databases/yourdbnamehere.db"という文字列をアプリケーションに合わせて変更し、AsyncTaskのインスタンスを作成してexecuteを実行します。それは簡単です。

...幸運しかし、外部記憶装置を使用しての許可を必ず含めてください。 :)

import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.nio.channels.FileChannel; 

import android.app.ProgressDialog; 
import android.content.Context; 
import android.os.AsyncTask; 
import android.os.Environment; 
import android.widget.Toast; 

public class ExportDatabaseFileTask extends AsyncTask<Void, Void, Boolean> { 
    private final ProgressDialog progressDialog; 

    private Context context; 

    public ExportDatabaseFileTask(Context context) 
    { 
     this.context = context; 
     progressDialog = new ProgressDialog(context); 
    } 

    protected void onPreExecute() { 
     this.progressDialog.setMessage("Exporting database..."); 
     this.progressDialog.show(); 
    } 

    protected Boolean doInBackground(Void... args) { 
     File dbFile = new File(Environment.getDataDirectory() + "/data/net.rejinderi.yourpackagehere/databases/yourdbnamehere.db"); 

     File exportDir = new File(Environment.getExternalStorageDirectory(), ""); 
     if (!exportDir.exists()) { 
      exportDir.mkdirs(); 
     } 
     File file = new File(exportDir, dbFile.getName()); 

     try { 
      file.createNewFile(); 
      this.copyFile(dbFile, file); 
      return true; 
     } catch (IOException e) { 
      return false; 
     } 
    } 

    protected void onPostExecute(final Boolean success) { 
     if (this.progressDialog.isShowing()) { 
      this.progressDialog.dismiss(); 
     } 
     if (success) { 
      Toast.makeText(context, "Export successful!", Toast.LENGTH_SHORT).show(); 
     } else { 
      Toast.makeText(context, "Export failed", Toast.LENGTH_SHORT).show(); 
     } 
    } 

    void copyFile(File src, File dst) throws IOException { 
     FileChannel inChannel = new FileInputStream(src).getChannel(); 
     FileChannel outChannel = new FileOutputStream(dst).getChannel(); 
     try { 
      inChannel.transferTo(0, inChannel.size(), outChannel); 
     } finally { 
      if (inChannel != null) 
      inChannel.close(); 
      if (outChannel != null) 
      outChannel.close(); 
     } 
    } 
} 
関連する問題