2017-01-09 11 views
0

取得..私は私のFirebaseデータベース内のDownloadURlからFirebaseストレージから画像を取得しようとしています...</p> <p>Firebase構造をfirebaseとSQLiteのに挿入すると、イメージビューに表示から画像を

ユーザー

| _9304809841

|__IMAGE :"https://firebasestorage.googleapis.com/v0/b/zumi- 
       60a8f.appspot.com/o/Profile_Image%2Fcropped-122662379.jpg? 
      alt=media&token=c8f3e9ee-637d-4bdd-9a76-a186ecd07e37" 

私は

Cursor c=Cdb.rawQuery("select email_phone,status,Dname,image from current_Luser",null); 

     Toast.makeText(this, "No of record : "+c.getCount(), Toast.LENGTH_SHORT).show(); 
     if(c.moveToNext()) { 

      if (c.getCount() > 0) { 
       email.setText(c.getString(0).replace("@zumi.com", "").toString()); 
       name.setText(c.getString(2)); 
       status.setText(c.getString(1)); 
       byte[] img = c.getBlob(3); 
       Bitmap bmp = BitmapFactory.decodeByteArray(img, 0, img.length); 
       showpotos.setImageBitmap(bmp); 

      } 

データがあるを使用してイメージを取得しようとしています。.. URLからイメージを取得するためにコードの下

final DefaultHttpClient client = new DefaultHttpClient(); 
      final HttpGet getRequest = new HttpGet(URL); //FETCHING THE URL FROM FIREBASE DATABASE.. 
      try { 

       HttpResponse response = client.execute(getRequest); 

       //check 200 OK for success 
       final int statusCode = response.getStatusLine().getStatusCode(); 

       if (statusCode != HttpStatus.SC_OK) { 
        //Toast.makeText(MainActivity.this, "Error in HttpSTATUS", Toast.LENGTH_SHORT).show(); 
        //return; 

       } 

       final HttpEntity entity = response.getEntity(); 
       if (entity != null) { 
        InputStream inputStream = null; 
        try { 
         // getting contents from the stream 
         inputStream = entity.getContent(); 
         //inputStream = (InputStream) new URL(params[0].toString()).getContent(); 

         byte[] image = new byte[inputStream.available()]; 
         inputStream.read(image); 
         values.put("image", image); //inserting the Values into ContentVAlues 



        } finally { 
         if (inputStream != null) { 
          inputStream.close(); 
         } 
         entity.consumeContent(); 
        } 
        if (values != null) { 
         Cdb.insert("current_Luser", null, values); // INSERTING INTO SQLite DB 
        } 
       } 
       else 
       { 
        //Toast.makeText(MainActivity.this, "Entity is Null", Toast.LENGTH_SHORT).show(); 
       } 
      } catch (Exception e) { 
       // You Could provide a more explicit error message for IOException 
       getRequest.abort(); 
       Log.d("",e.toString()); 
       // Toast.makeText(MainActivity.this, "Error "+e.toString(), Toast.LENGTH_SHORT).show(); 
      } 

      return null; 
     } 

    } 

を使用しています[B @ d0ca6a3値としてSQLite DBに挿入されましたが、画像ビューに表示されません....

Plsはこの文では、ヘルプ...

+2

を内のすべてのデータを保持することを目的とバッファ を割り当てるために、このメソッドの戻り値を使用するための正しい ことはありません。 'HttpClient'を完全に1行のコードに置き換えます。 –

+0

SQLiteにダウンロードして保存する....両方とも重要です –

+0

GlideとPicassoはファイルをキャッシュすることができるので、SQLiteに格納する必要はなく、問題は解決します。他のデータの場合は、Firebaseリアルタイムデータベースを使用することができます.Firebase Realtime Databaseは、SQLiteをオフラインストレージとして使用しますが、直接使用するという面倒な作業はありません。 –

答えて

0

available(の使用は)問題原因とすることができる。

byte[] image = new byte[inputStream.available()]

documentation for available()を言う:

注InputStreamのいくつかの実装がしますが、そのストリーム内の合計バイト数を に戻してください。あなたがちょうど `Glide`または` Picasso`を使用してみてください画像をダウンロードしたい場合は、このストリーム

関連する問題