2014-02-11 52 views
0

我創建了小部件,現在我想下載圖像並使用小部件圖像。這是我的代碼,但無法在小部件中顯示我的下載圖像。Android小部件圖像中的Android顯示圖像

RemoteViews views; 
    int appWidgetId; 
    public File file; 
    public Bitmap bitmap; 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     super.onReceive(context, intent); 
     if (CLOCK_WIDGET_UPDATE.equals(intent.getAction())) { 
      Toast.makeText(context, "onReceiver()", Toast.LENGTH_LONG).show(); 
     } 
    } 

    public void onUpdate(Context context, AppWidgetManager appWidgetManager, 
      int[] appWidgetIds) { 
     final int N = appWidgetIds.length; 
     for (int i = 0; i < N; i++) { 
      appWidgetId = appWidgetIds[i]; 

      Intent intent = new Intent(context, MainActivity.class); 
      PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, 
        intent, 0); 

      views = new RemoteViews(context.getPackageName(), 
        R.layout.widget_demo); 
      String aa = (MainActivity.itemList.get(0) 
        .get(MainActivity.KEY_title)).toString(); 

      views.setOnClickPendingIntent(R.id.widgetPic, pendingIntent); 

      views.setOnClickPendingIntent(R.id.widgetDesc, pendingIntent); 
      views.setTextViewText(R.id.widgetDesc, aa); 
      String ab = (MainActivity.itemList.get(0) 
        .get(MainActivity.KEY_image)).toString(); 

      // views.setImageViewUri(R.id.widgetPic, Uri.parse(ab)); 
      new DownloadTask().execute("http://api.androidhive.info/images/sample.jpg"); 

      // views.setImageViewBitmap( 
      // R.id.widgetPic, 
      // ((BitmapDrawable) context.getResources().getDrawable( 
      // R.drawable.aaaaaaaaaaaaaaa)).getBitmap()); 

      appWidgetManager.updateAppWidget(appWidgetId, views); 
     } 
    } 

    public void updateAppWidget(Context context, 
      AppWidgetManager appWidgetManager, int appWidgetId) { 
     RemoteViews updateViews = new RemoteViews(context.getPackageName(), 
       R.layout.widget_demo); 
     try { 

     } catch (Exception e) { 

     } 

     appWidgetManager.updateAppWidget(appWidgetId, updateViews); 
    } 

    private Bitmap downloadUrl(String strUrl) throws IOException { 
     Bitmap bitmap = null; 
     InputStream iStream = null; 
     try { 
      URL url = new URL(strUrl); 

      HttpURLConnection urlConnection = (HttpURLConnection) url 
        .openConnection(); 
      urlConnection.connect(); 
      iStream = urlConnection.getInputStream(); 

      bitmap = BitmapFactory.decodeStream(iStream); 

     } catch (Exception e) { 
      Log.d("Exception while downloading url", e.toString()); 
     } finally { 
      iStream.close(); 
     } 

     return bitmap; 
    } 

    private class DownloadTask extends AsyncTask<String, Integer, Bitmap> { 
     Bitmap bitmap = null; 

     @Override 
     protected Bitmap doInBackground(String... url) { 
      try { 
       bitmap = downloadUrl(url[0]); 
      } catch (Exception e) { 
       Log.d("Background Task", e.toString()); 
      } 
      return bitmap; 
     } 

     @Override 
     protected void onPostExecute(Bitmap result) { 

      views.setImageViewBitmap(R.id.widgetPic, result); 


      // Toast.makeText(getBaseContext(), 
      // "Image downloaded successfully",Toast.LENGTH_SHORT).show(); 
     } 

    } 

} 

如何使用setImageViewUri顯示此圖像?如果有人知道解決方案,請幫助我。謝謝

回答

0

完成下載某些圖像後,您必須通過調用updateAppWidget()來刷新應用程序窗口小部件。 也許就是這樣,

@Override 
    protected void onPostExecute(Bitmap result) { 

     views.setImageViewBitmap(R.id.widgetPic, result); 
     updateAppWidget(appWidgetId, remoteView); 
    } 

你可以通過appWidgetId和遠程視窗變量的DownloadTask創造。