J'ai deux grandes questions.
Il y a une base de données dans mon application Android. Je le crée par 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);
}
Il n'y a pas de chemin spécifique défini au code pour la base de données.
C'est le code comment je télécharge des fichiers. Et il y a un chemin spécifique, mais il n'est pas permis de créer un dossier dans 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
Aidez-moi, s'il vous plaît. Désolé pour mon mauvais anglais.
dans Android 6.0, Google a ajouté une nouvelle fonctionnalité appelée Sauvegarde automatique.
lorsque cette option est activée (par défaut), le système Android copie presque tous les répertoires et fichiers créés par le système et les télécharge sur le compte Google Drive de l'utilisateur.
Lorsque l'utilisateur réinstalle l'application, Android restaure automatiquement les données de l'application, quelle que soit la manière dont elles ont été installées (via Play Store, adb install, configuration initiale de l'appareil).
L'opération de restauration a lieu après l'installation de l'APK, mais avant que l'application soit disponible pour être lancée par l'utilisateur.
Page des développeurs Android: https://developer.Android.com/guide/topics/data/autobackup.html
Je suis tombé sur cette question lorsque je cherchais une solution à un problème similaire lié à GreenDao - répondez ici un peu plus en profondeur, mais si vous êtes sur votre api 23, vous devrez définir allowBackup sur false pour pouvoir dépendre des bases de données être effacé lorsque vous désinstallez
Qu'advient-il d'une base de données SQLite lorsque l'application est supprimée
Votre base de données fonctionne-t-elle (en plus de ne pas supprimer lors de la suppression de l'application)?
Si cela ne fonctionne pas correctement, vous pouvez jeter un oeil à:
http://developer.Android.com/reference/Android/database/sqlite/SQLiteOpenHelper.html
Bien que cela ne soit pas nécessairement lié à votre problème, vous pouvez envisager de créer un open()
et un close()
pour votre base de données et d’utiliser un objet SQLiteOpenHelper
dans chaque - dans open()
, vous utiliseriez sqliteopenhelperObj.getWriteableDatabase()
et dans close()
, vous utiliseriez sqliteopenhelperObj.close()
.
http://developer.Android.com/reference/Android/database/sqlite/SQLiteOpenHelper.html#close
Modifier:
S'il s'agit d'un compte personnel et que vous devez supprimer la sauvegarde à des fins de test, vous pouvez accéder à drive.google.com pour votre compte et accéder à la section des sauvegardes.
Sélectionnez une sauvegarde et vous avez la possibilité de supprimer les sauvegardes d'un périphérique spécifique:
La sauvegarde automatique peut être désactivée en définissant Android:allowBackup="false"
dans AndroidManifest.xml