The request is able to execute getWritableDatabase() successfully when the Caller Fragment is running. But when the Fragment is closed or the app is closed, the volley request executing in background is not able to execute getWritableDatabase()
public class ContactsTableManager {
private Context context;
private DBHelper ourHelper;
private SQLiteDatabase ourDatabase;
private static final String DATABASE_NAME = "Contacts";
private static final String DATABASE_TABLE = "ContactsTable";
private static final int DATABASE_VERSION = 1;
public static final String TAG = "contactsmanager.java";
public static final String KEY_NAME = "NAME";
public static final String KEY_NUMBER = "NUMBER";
public static final String KEY_ID = "ID";
public ContactsTableManager(Context c) {
context = c;
}
public ContactsTableManager open() {
ourHelper = new DBHelper(context);
ourDatabase = ourHelper.getWritableDatabase();
return this;
}
public void close() {
ourHelper.close();
}
public boolean addEntry(String Name, String Number) {
boolean success=false;
ContentValues cv = new ContentValues();
cv.put(KEY_NAME,Name);
cv.put(KEY_NUMBER,Number);
if(!checkData(cv)){
open();
success = ourDatabase.insert(DATABASE_TABLE, null, cv) > 0;
close();
}
return success;
}
private static class DBHelper extends SQLiteOpenHelper {
public DBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" +
KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
KEY_NAME + " TEXT NOT NULL, " + KEY_NUMBER + " TEXT NOT NULL); "
);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE);
onCreate(db);
}
}
}
Volley Request Code, executed on a fragment, I even tried passing the getActivity() in onCreateView(). Didn't work.
private void sendNumberRequest(final String name, final String phoneNumber) {
String tag_string_req = "req_contact";
StringRequest strReq = new StringRequest(Request.Method.POST,
AppConfig.URL_Contacts, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
response=response.substring(response.indexOf("{"));
try {
JSONObject jObj = new JSONObject(response);
Log.e(TAG, "JSONObject: " + jObj.toString());
boolean error = jObj.getBoolean("error");
// Check for error node in json
if (!error) {
JSONObject user = jObj.getJSONObject("user");
ContactsTableManager contactsTableManager1=new ContactsTableManager(getActivity());
// Inserting row in users table
contactsTableManager1.addEntry(name,phoneNumber);
makeScreen();
}
} catch (JSONException e) {
// JSON error
Log.e(TAG, "Login Response: catch");
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, "Login Error: " + error.getMessage());
}
}) {
@Override
protected Map<String, String> getParams() {
// Posting parameters to login url
Map<String, String> params = new HashMap<String, String>();
params.put("tag", "contact_req");
params.put("name", name);
params.put("number", phoneNumber);
return params;
}
};
// Adding request to request queue
AppController.getInstance().addToRequestQueue(strReq, tag_string_req);
}
0 comments:
Post a Comment