7

Я пытаюсь установить изображение в представлении изображения в макете виджета в OnUpdate, но изображение не обновляетсяИзображения в виджете

@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); 
     } 
    } 

макета XML для виджета

<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> 

файла манифеста

<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> 

Но когда пытаешься загрузить виджет, я получаю тост «Приложение не установлено», я не показываю такого тоста, откуда он приходит?

Почему изображение не устанавливается, как его исправить ??

+0

ли загрузить его без изображения? Для меня это звучит как-то неправильно с конфигурацией виджета/приложения, а не с изображением. Можете ли вы опубликовать манифест? – Gustek

+0

Я добавил файл манифеста, см. Код –

ответ

1

Убедитесь, что правильное название пакета, установленный в «Android: настройки» поле в XML appwidget-провайдера, а также у вас есть правильный intetn фильтр, установленный в вашем файле манифеста.

+0

см. Обновленный код –

+0

Он сказал, что поставщик виджета xml не является макетом. – JoxTraex

+0

ОК, я отправил для комментария в вопросе и ответил здесь тоже за то же самое, это нормально, мой плохой, снова обновление –

0

Попробуйте с remoteview.setimageViewuri, как показано ниже.

@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> 

Вам не хватает точки перед именем и у вас есть этот ресивер в два раза.

0

Проверьте эту ссылку.
Вот полная демо для виджета Click Here и импортировать этот проект com.javatechig.widgetdemo

+0

Обратите внимание, что [ссылки только ответы не поощряются] (http://meta.stackoverflow.com/tags/link- only-answers/info), SO-ответы должны быть конечной точкой поиска решения (по сравнению с еще одной остановкой ссылок, которые со временем становятся устаревшими). Пожалуйста, подумайте о добавлении отдельного резюме здесь, сохранив ссылку в качестве ссылки. – kleopatra

 Смежные вопросы

  • Нет связанных вопросов^_^