Guys ¿y yo estoy haciendo mi trabajo en red doInBackground() sigue recibiendo este error en esta línea BitmapFactory.decodeStream (url.openConnection() getInputStream().);
mi código está por debajo
@Override
protected Void doInBackground(Void... voids) {
try {
RequestQueue queue = Volley.newRequestQueue(con);
StringRequest jsonArrayRequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.e("Response: ",response.toString());
//mProgressDialog.dismiss();
try{long count;
String[] projection = {
columnid,
columnimage,
columnttitle,
columndesription,
columnurl
};
SQLiteDatabase db=mdbHelper.getReadableDatabase();
Cursor cursor=db.query(tablename,
projection,
null,
null,
null,
null,
null);
count=cursor.getCount();
JSONObject jObject=new JSONObject(response);
String status=jObject.getString("status");
String sortby=jObject.getString("sortBy");
if(status.equals("ok")){
JSONArray jsonArray= jObject.getJSONArray("articles");
for(int i=0;i<jsonArray.length();i++){
JSONObject jsonobject=jsonArray.getJSONObject(i);
Log.e("InnerData: ",jsonobject.toString());
//NewsModel mDataList = new NewsModel();
//mDataList.setDescription(jsonobject.getString("description"));
//mDataList.setTitle(jsonobject.getString("title"));
//mDataList.setUrl(jsonobject.getString("url"));
//mDataList.setUrltoimage(jsonobject.getString("urlToImage"));
cursor.moveToFirst();
if(cursor.moveToFirst()){
Log.d("yes cursor is null", cursor.toString());
}else { Log.d("NO cursor is not null", cursor.toString());}
for(int j=0;j<=jsonArray.length();j++){
SQLiteDatabase db1=mdbHelper.getWritableDatabase();
if(count<=0){
Id=1;
try {
URL url = new URL(jsonobject.getString("urlToImage"));
bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
}catch (IOException e){e.printStackTrace();}
byte[] byteimage1=getBytes(bmp);
ContentValues values= new ContentValues();
values.put(columnid,Id);
values.put(columnimage,byteimage1);
values.put(columnttitle,jsonobject.getString("title"));
values.put(columndesription,jsonobject.getString("description"));
values.put(columnurl,jsonobject.getString("url"));
long currentRow_ID=db1.insert(tablename,null,values);
if(Id!=currentRow_ID){
Toast.makeText(con,"Error with saving news",Toast.LENGTH_LONG).show();
}
else {
Toast.makeText(con,"You are having "+currentRow_ID+" News",Toast.LENGTH_LONG).show();
}
}
if(count>0 && count<40){
cursor.moveToPosition(j);
if((!(cursor.getString(cursor.getColumnIndex(columnttitle)).equals(jsonobject.getString("title")))) || (cursor.getInt(cursor.getColumnIndex(columnid))==0) || (cursor.getInt(cursor.getColumnIndex(columnid))==-1)){
try {
URL url = new URL(jsonobject.getString("urlToImage"));
bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
}catch (IOException e){e.printStackTrace();}
byte[] byteimage1=getBytes(bmp);
cursor.moveToLast();
if(cursor.getInt(0)<=0)
{Id=1;}
else {Id=cursor.getInt(cursor.getColumnIndex(columnid))+1;}
ContentValues values= new ContentValues();
values.put(columnid,Id);
values.put(columnimage,byteimage1);
values.put(columnttitle,jsonobject.getString("title"));
values.put(columndesription,jsonobject.getString("description"));
values.put(columnurl,jsonobject.getString("url"));
long currentRow_ID=db1.insert(tablename,null,values);
if(Id!=currentRow_ID){
Toast.makeText(con,"Error with saving news",Toast.LENGTH_LONG).show();
}
else {
Toast.makeText(con,"You are having "+currentRow_ID+" News",Toast.LENGTH_LONG).show();
}
}
}else { cursor.moveToPosition(j);
if(!cursor.getString(cursor.getColumnIndex(columnttitle)).equals(jsonobject.getString("title"))){
//cursor=db.rawQuery(" SELECT "+columnttitle+" FROM "+tablename+" WHERE "+columnid+" =?",new String[]{ String.valueOf(1) });
db1.delete(tablename,columnid+"=?", new String[] { String.valueOf(1) });
Log.d("record has been deleted",cursor.getString(cursor.getColumnIndex(columnttitle)));
long counttt=cursor.getCount();
for(int k=2;k<=counttt;k++){
ContentValues values= new ContentValues();
values.put(columnid,--k);
db1.update(tablename,values,columnid +"="+k,null);
}
cursor.moveToLast();
if(cursor.getInt(cursor.getColumnIndex(columnid))<40) {Id=cursor.getInt(cursor.getColumnIndex(columnid))+1;}
else {Toast.makeText(con," Record is not deleted",Toast.LENGTH_LONG).show();
db1.delete(tablename,columnid+"=?", new String[] { String.valueOf(1) });
for(int k=2;k<=counttt;k++){
ContentValues values= new ContentValues();
values.put(columnid,--k);
db1.update(tablename,values,columnid +"="+k,null);
}
Id=cursor.getInt(cursor.getColumnIndex(columnid))+1;
}
try {
URL url = new URL(jsonobject.getString("urlToImage"));
bmp1 = BitmapFactory.decodeStream(url.openConnection().getInputStream());
}catch (IOException e){e.printStackTrace();}
byte[] byteimage1=getBytes(bmp1);
ContentValues values= new ContentValues();
values.put(columnid,Id);
values.put(columnimage,byteimage1);
values.put(columnttitle,jsonobject.getString("title"));
values.put(columndesription,jsonobject.getString("description"));
values.put(columnurl,jsonobject.getString("url"));
long currentRow_ID=db1.insert(tablename,null,values);
if(Id!=currentRow_ID){
Toast.makeText(con,"Error with saving news",Toast.LENGTH_LONG).show();
}
else {
Toast.makeText(con,"You are having "+currentRow_ID+" News",Toast.LENGTH_LONG).show();
}
}
}
if(j>=count){cursor.close();
db1.close();}
}
/*for(int j=1;j<=count;j++){
NewsModel model=new NewsModel();
Cursor cursor1=db.rawQuery(" SELECT * FROM "+tablename+" WHERE "+columnid+"=?",new String[]{String.valueOf(j)});
model.setTitle(cursor1.getString(cursor1.getColumnIndex(columnttitle)));
model.setDescription(cursor1.getString(cursor1.getColumnIndex(columndesription)));
model.setUrl(cursor1.getString(cursor1.getColumnIndex(columnurl)));
byte[] img = cursor1.getBlob(cursor1.getColumnIndex(columnimage));
Bitmap bitmapimage= BitmapFactory.decodeByteArray(img,0,img.length);
model.setimage(bitmapimage);
mModelList.add(model);
} */
}
//recyclerView.setAdapter(new Adapter(MainActivity.this,mModelList));
}
}catch (NullPointerException ex){
Log.e("Error ",ex.toString());
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
//mProgressDialog.dismiss();
if (error instanceof TimeoutError || error instanceof NoConnectionError) {
Toast.makeText(con, "Failed to fetch data." +
" Please check your network connection", Toast.LENGTH_SHORT).show();
} else if (error instanceof AuthFailureError) {
//TODO
} else if (error instanceof ServerError) {
//TODO
Log.e("Server error",error.toString());
} else if (error instanceof NetworkError) {
//TODO
Log.e("Network error",error.toString());
} else if (error instanceof ParseError) {
//TODO
Log.e("Parse Error ",error.toString());
}
}
}) {
@Override
protected Response<String> parseNetworkResponse(NetworkResponse response) {
if (response.headers == null)
{
// cant just set a new empty map because the member is final.
response = new NetworkResponse(
response.statusCode,
response.data,
Collections.<String, String>emptyMap(), // this is the important line, set an empty but non-null map.
response.notModified,
response.networkTimeMs);
}
return super.parseNetworkResponse(response);
}
};
//*********To Retry sending*********************************************
jsonArrayRequest.setRetryPolicy(new DefaultRetryPolicy(8000,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
queue.add(jsonArrayRequest);
}catch (NullPointerException ex){
}catch (IllegalFormatException ex){}
return null;
}
Salida Android de consulta para estas tareas asíncronas, simplifica todo. – jasonflaherty