7

sto cercando di impostare l'immagine nella visualizzazione di immagini nel layout widget nella onUpdate, ma l'immagine non viene aggiornatoImmagine in Widget

@Override 
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) 
    { 
     Log.i(TAG, "onUpdate called"); 
     for (int appWidgetId : appWidgetIds) 
     { 
      Bitmap bitmap=ImageUtils.getBitmap(context, appWidgetId); 
      RemoteViews remoteView = new RemoteViews(context.getPackageName(), R.layout.widget); 

      remoteView.setImageViewBitmap(R.id.imgView,bitmap); 
      appWidgetManager.updateAppWidget(appWidgetId, remoteView); 
     } 
    } 

di layout xml per widget di

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <ImageView 
     android:id="@+id/imgView" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:src="@drawable/ic_launcher" /> 

</LinearLayout> 

file di manifesto

<application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.demo.MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".WidgetConfig" 
      android:label="@string/app_name" > 
      <intent-filter> 
        <action 
        android:name="android.appwidget.action.APPWIDGET_CONFIGURE" /> 
      </intent-filter> 
     </activity> 
     <receiver 
      android:name="BasicWidgetProvider"> 
      <intent-filter> 
       <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> 
      </intent-filter> 
      <meta-data 
       android:name="android.appwidget.provider" 
       android:resource="@xml/widget_info" /> 
     </receiver> 

      <receiver 
      android:name="BasicWidgetProvider"> 
      <intent-filter> 
       <action 
        android:name="android.appwidget.action.APPWIDGET_UPDATE" /> 
        <data android:scheme="widget" /> 
      </intent-filter> 
      <meta-data 
       android:name="android.appwidget.provider" 
       android:resource="@xml/widget_info" /> 
     </receiver> 
    </application> 

widget_info.xml

<appwidget-provider 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:minWidth="25dp" 
    android:minHeight="25dp" 
    android:initialLayout="@layout/widget" 
    android:configure="com.demo.WidgetConfig" 
    android:widgetCategory="home_screen|keyguard" 
    android:previewImage="@layout/widget" 
    android:resizeMode="horizontal|vertical" 
    android:initialKeyguardLayout="@layout/widget" 
    android:minResizeHeight="5dp" 
    android:minResizeWidth="5dp"> 
</appwidget-provider> 

Ma quando provo a caricare widget, ottengo un Toast "L'app non è installata", non sto mostrando alcun tipo di toast da dove viene?

Perché l'immagine non è impostata, come risolverlo ??

+0

vuol caricare senza immagine? Per quanto mi riguarda sembra un po 'sbagliato con la configurazione di widget/app non con l'immagine. Puoi pubblicare manifest? – Gustek

+0

ho aggiunto file manifest, vedere il codice –

risposta

1

Assicurati di avere il nome del pacchetto corretto impostato in "Android: configurare" campo nella xml AppWidget-fornitore, e anche di avere il giusto intetn-filtro impostato nel file manifest.

+0

vedere il codice aggiornato –

+0

Ha detto che il provider di widget xml non è il layout. – JoxTraex

+0

ok, ho postato per il commento in questione e ho risposto anche qui per lo stesso, questo è ok il mio male, di nuovo aggiornando –

0

Si prega di provare con remoteview.setimageViewuri come di seguito.

@Override 
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { 

     remoteViews = new RemoteViews(context.getPackageName(), R.layout.main); 
     thisWidget = new ComponentName(context, HelloWidget.class); 
     remoteViews.setImageViewUri(R.id.imageView1,Uri.parse("/mnt/sdcard/test.png")); 
     appWidgetManager.updateAppWidget(thisWidget, remoteViews); 
    } 
0
<receiver 
    android:name="BasicWidgetProvider"> 
    <intent-filter> 
     <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> 
    </intent-filter> 
    <meta-data 
     android:name="android.appwidget.provider" 
     android:resource="@xml/widget_info" /> 
</receiver> 

Si manca il punto davanti al nome e Si dispone di questo ricevitore due volte.

0

Dai un'occhiata a questo link.
Ecco demo completa per widget di Click Here e importare questo progetto com.javatechig.widgetdemo

+0

Nota che [le risposte solo per il collegamento sono scoraggiate] (http://meta.stackoverflow.com/tags/link- solo-risposte/informazioni), le risposte SO dovrebbero essere il punto finale di una ricerca di una soluzione (rispetto a un'altra sosta di riferimenti, che tende a diventare obsoleta nel tempo). Si prega di considerare l'aggiunta di una sinossi autonoma qui, mantenendo il collegamento come riferimento. – kleopatra