2つの大きな質問があります。
Androidアプリケーションにデータベースがあります。Javaで作成します
class as follows.
public DataBaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public DataBaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version, DatabaseErrorHandler errorHandler) {
super(context, name, factory, version, errorHandler);
}
@Override
public void onCreate(SQLiteDatabase db) {
// creating required tables
db.execSQL(CREATE_TABLE_QUOTES);
db.execSQL(CREATE_TABLE_FILTERS);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// on upgrade drop older tables
db.execSQL("DROP TABLE IF EXISTS " + TABLE_QUOTES);
db.execSQL("DROP TABLE IF EXISTS " + TABLE_QUOTES);
// create new tables
onCreate(db);
}
データベースのコードで定義された特定のパスはありません。
これは、ファイルをダウンロードするコードです。また、特定のパスがありますが、Android> data> com.myappにもフォルダーを作成することはできません。
public String downloadImage(String img_url, int i) {
File sdCard = Environment.getExternalStorageDirectory();
File dir = new File (sdCard.getAbsolutePath() + "/fog/images/filters");
// Make sure the Pictures directory exists.
dir.mkdirs();
File destinationFile = new File(dir, "filter"+i);
String filepath = null;
try{
URL url = new URL("http://fog.wrapper.io/uploads/category/"+img_url+".png");
HttpURLConnection conection = (HttpURLConnection)url.openConnection();
conection.setRequestMethod("GET");
conection.setRequestProperty("Content-length", "0");
conection.setUseCaches(false);
conection.setAllowUserInteraction(false);
conection.connect();
int status = conection.getResponseCode();
switch (status) {
case 200:
case 201:
FileOutputStream fileOutput = new FileOutputStream(destinationFile);
InputStream inputStream = conection.getInputStream();
int totalSize = conection.getContentLength();
int downloadedSize = 0;
byte[] buffer = new byte[1024];
int bufferLength = 0;
while ( (bufferLength = inputStream.read(buffer)) > 0 )
{
fileOutput.write(buffer, 0, bufferLength);
downloadedSize += bufferLength; Log.i("Progress:","downloadedSize:"+downloadedSize+"totalSize:"+ totalSize) ;
}
fileOutput.close();
if(downloadedSize==totalSize) filepath = destinationFile.getPath();
Log.i("filepath:"," "+filepath) ;
return filepath;
}
} catch (IOException e) {
Log.d("ImageManager", "Error: " + e);
}
return null;
}
} // Get filters
私を助けてください。悪い英語でごめんなさい。
in Android 6.0、googleは自動バックアップと呼ばれる新しい機能を追加しました。
このオプションがオン(デフォルトはオン)の場合、Android systemはシステムによって作成されたほぼすべてのディレクトリとファイルをコピーし、ユーザーのGoogleドライブアカウントにアップロードします。
ユーザーがアプリを再インストールすると、Androidアプリのデータは、Playストア、adbインストール、初期デバイスセットアップを介して)インストール方法に関係なく自動的に復元されます。
復元操作は、APKがインストールされた後、ユーザーがアプリを起動できるようになる前に発生します。
Android開発者ページ: https://developer.Android.com/guide/topics/data/autobackup.html
GreenDaoに関連する同様の問題の解決策を探していたときにこの質問を見つけました-基本的にはAPI 23でデータベースに依存できるようにallowBackupをfalseに設定する必要がありますアンインストールするとクリアされます
アプリが削除されるとSqliteデータベースはどうなりますか
DBは機能しますか(アプリを削除するときに削除しないことを除く)。
正常に動作しない場合は、次をご覧ください。
http://developer.Android.com/reference/Android/database/sqlite/SQLiteOpenHelper.html
これは必ずしもあなたの問題に関連するわけではありませんが、DBのopen()
とclose()
を作成し、それぞれのopen()
でSQLiteOpenHelper
オブジェクトを使用することを検討してください。 、sqliteopenhelperObj.getWriteableDatabase()
を使用し、close()
でsqliteopenhelperObj.close()
を使用します。
http://developer.Android.com/reference/Android/database/sqlite/SQLiteOpenHelper.html#close
編集:
Android:allowBackup="false"
でAndroidManifest.xml
を設定すると、自動バックアップを無効にできます