lundi 6 avril 2015

insect images from url into Sqlite table

i am trying to insert an image into an sqlite database using blob i dont want to store the image in the memory card and read from it cos i dont want the user to have access to it . i have a row in the table called image .The datas comes from an mysql database



package com.mall.our;

import java.io.ByteArrayOutputStream;
import java.util.ArrayList;
import java.util.HashMap;

import android.content.ContentValues;
import android.content.Context;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.preference.PreferenceManager;
import android.util.Log;

public class DBTool extends SQLiteOpenHelper {
private Context appContext;
static final String firstname="firstname";
static final String lastname="lastname";

public DBTool(Context applicationContext){

super(applicationContext, "friend.db", null, 1);
this.appContext = applicationContext;

}
@Override
public void onCreate(SQLiteDatabase database) {

String query = "CREATE TABLE friends ( contactId INTEGER PRIMARY KEY, name TEXT, " +
"message TEXT, image BLOB)";
database.execSQL(query);
}

@Override
public void onUpgrade(SQLiteDatabase database, int oldVersion, int newVersion) {

String query = "DROP TABLE IF EXISTS friends";

database.execSQL(query);
onCreate(database);

}
public void insertContact(HashMap<String, String> queryValues){

SQLiteDatabase database = this.getWritableDatabase();

ContentValues values = new ContentValues();

values.put("name", queryValues.get("name"));
values.put("message", queryValues.get("message"));
values.put("image", queryValues.get("image"));
database.insert("friends", null, values);

database.close();

}
public ArrayList<HashMap<String, String>> getAllContacts(){

ArrayList<HashMap<String, String>> contactArrayList = new ArrayList<HashMap<String, String>>();

String selectQuery = "SELECT * FROM friends";

SQLiteDatabase database = this.getWritableDatabase();

Cursor cursor = database.rawQuery(selectQuery, null);

if(cursor.moveToFirst()){

do{

HashMap<String, String> contactMap = new HashMap<String, String>();


contactMap .put("name", cursor.getString(0));
contactMap .put("message", cursor.getString(1));
contactMap .put("image", cursor.getString(2));

contactArrayList.add(contactMap);

} while(cursor.moveToNext());

}

return contactArrayList;

}
public int updateContact(HashMap<String, String> queryValues){

SQLiteDatabase database = this.getWritableDatabase();

ContentValues values = new ContentValues();

values.put("name", queryValues.get("name"));
values.put("message", queryValues.get("message"));
values.put("image", queryValues.get("image"));


return database.update("friends", values,
"contactId" + " = ?", new String[] {queryValues.get("contactId") });

}

public void deleteContact(){

SQLiteDatabase database = this.getWritableDatabase();

String deleteQuery = "DELETE FROM friends ";

database.execSQL(deleteQuery);

}


public HashMap<String, String> getContactInfo(String id){

HashMap<String, String> contactMap = new HashMap<String, String>();

SQLiteDatabase database = this.getReadableDatabase();

String selectQuery = "SELECT * FROM friends WHERE contactId='" + id + "'";

Cursor cursor = database.rawQuery(selectQuery, null);

if(cursor.moveToFirst()){

do{

contactMap.put("name", cursor.getString(0));
contactMap.put("message", cursor.getString(1));
contactMap.put("image", cursor.getString(2));

} while(cursor.moveToNext());

}

return contactMap;

}

}


this my other class



package com.mall.our;

import java.io.IOException;

import java.net.URL;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONObject;
import android.app.ProgressDialog;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.TextView;

import com.actionbarsherlock.app.SherlockListFragment;

import com.mall.first.JSONParser;
import com.mall.first.R;


public class Chat extends SherlockListFragment {
JSONParser jsonParser = new JSONParser();
private static final String TAG_POSTS = "posts";
public static final String TAG_ID = "id";
public static final String TAG_NAME = "name";
public static final String TAG_pic = "pic";
public static final String TAG_MESSAGE = "message";
public static final String TAG_CATEGORIES_LOGO = "categories_logo";
DBTool dbTool = new DBTool(getActivity());
/*
user details
private static final String NAME = "name";
private static final String AGE = "age";
private static final String STATUS = "status";
private static final String PIC = "pic";
private static final String SEX = "sex"; String friendname,status;

private static final String TAG_SUCCESS = "success";*/
//user


private static final String URL = "http://ift.tt/1EwvEX6";
private static final String URL_CATEGORY = "http://ift.tt/1FaDCdJ";

private BaseAdapter mAdapter;
private ListView lv;
SharedPreferences sp ;
Bundle bon = new Bundle();

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.friends, container, false);
return rootView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
new LoadComments().execute();


}

class LoadComments extends AsyncTask<Void, Void, ArrayList<HashMap<String,String>>> {
private ProgressDialog pDialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(getActivity());

pDialog.setIndeterminate(false);
pDialog.setCancelable(true);

}

@Override
protected ArrayList<HashMap<String, String>> doInBackground(Void... arg0) {

ArrayList<HashMap<String, String>> categoryList = new ArrayList<HashMap<String, String>>();

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getActivity());
String username = sp.getString("username", "anon");
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("username", username));
JSONObject json = jsonParser.makeHttpRequest(URL_CATEGORY, "POST",
params);

try {

JSONArray categories = json.getJSONArray(TAG_POSTS);
for (int i = 0; i < categories.length(); i++) {
String id = categories.getJSONObject(i).getString("TAG_ID");
String name = categories.getJSONObject(i).getString("TAG_NAME");
String pic = categories.getJSONObject(i).getString("TAG_pic");
String message = categories.getJSONObject(i).getString("TAG_MESSAGE");

HashMap<String, String> queryValuesMap = new HashMap<String, String>();

queryValuesMap.put("name", name);
queryValuesMap.put("image", pic);
queryValuesMap.put("message",message);

dbTool.insertContact(queryValuesMap);


}
}catch (Throwable e){
e.printStackTrace();
}
return categoryList;
}

@Override
protected void onPostExecute(ArrayList<HashMap<String, String>> result) {
super.onPostExecute(result);


}
}

}


My question is how do i convert the "String pic" variable in the Chat.java class is an array or url of images. how do i convert it to bitmap so i can insect it in the table?


Aucun commentaire:

Enregistrer un commentaire