package com.jdroid.android.debug; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Environment; import android.preference.Preference; import android.preference.Preference.OnPreferenceClickListener; import android.preference.PreferenceGroup; import com.jdroid.android.R; import com.jdroid.android.application.AbstractApplication; import com.jdroid.android.sqlite.SQLiteHelper; import com.jdroid.android.utils.AppUtils; import com.jdroid.java.exception.UnexpectedException; import com.jdroid.java.http.MimeType; import com.jdroid.java.utils.FileUtils; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; public class DatabaseDebugPrefsAppender extends PreferencesAppender { @Override public int getNameResId() { return R.string.jdroid_database; } @Override public void initPreferences(final Activity activity, PreferenceGroup preferenceGroup) { Preference preference = new Preference(activity); preference.setTitle(R.string.jdroid_downloadDatabase); preference.setSummary(R.string.jdroid_downloadDatabase); preference.setOnPreferenceClickListener(new OnPreferenceClickListener() { @SuppressWarnings("resource") @Override public boolean onPreferenceClick(Preference preference) { File dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); dir.mkdirs(); File file = new File(dir, AppUtils.getApplicationName() + ".sqlite"); try { FileUtils.copyStream(new FileInputStream(SQLiteHelper.getDatabaseFile(activity)), file); Intent intent = new Intent(Intent.ACTION_SEND); intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file)); intent.setType(MimeType.OCTET_STREAM); activity.startActivity(intent); } catch (FileNotFoundException e) { throw new UnexpectedException(e); } return true; } }); preferenceGroup.addPreference(preference); } @Override public Boolean isEnabled() { return AbstractApplication.get().isDatabaseEnabled(); } }