Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Обновление виджета при нажатии на него - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Динамическое создание объекта http://www.cyberforum.ru/android-dev/thread609456.html
Всем привет! Заранее извиняюсь за глупый вопрос. Подскажите, пожалуйста, кто знает, как можно динамически создать кнопку в Android? Я пытаюсь, но у меня она не показывается. Вот процедура...
Программирование Android Создание мессенджеров Мне выпало задание написать мессенджер под Андройд, с чего вообще надо начать? Что учить? (язык программирование Java) Какие советы можете дать? http://www.cyberforum.ru/android-dev/thread609360.html
Обучение Java Программирование Android
Хочу до 1 июля выучить этот язык, чтобы к 10 июля сдать проект по мессенджеру на андройда, что можете посоветовать?
main.xml Программирование Android
Выдает ошибки - на строчках, где выдает ошибки указал три ! - в чем проблема? <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" ...
Программирование Android библиотека OpenSSL http://www.cyberforum.ru/android-dev/thread608507.html
У меня есть проект, написанный на Си. Мне его надо перенести на андроид. Я использую метод standalone toolchain. При компиляции возникают ошибики. Поскольку раньше я никогда не занималась переносом...
Программирование Android НУ НИКАК НЕ ОТЛАДИТЬ ООООЧень хочу попробовать что-нибудь сотворить на андроиде. а тут прямо сами небеса против меня. Эмулятор - Образ установленный на виртуальную машину не видит сеть... вообще отсутствует значёк... подробнее

Показать сообщение отдельно
blood73
Сообщений: n/a

Обновление виджета при нажатии на него - Программирование Android

19.06.2012, 20:52. Просмотров 1056. Ответов 0
Метки (Все метки)

Добрый вечер. Пытаюсь сделать свой виджет. Суть: выводит картинку с одного интернет-ресурса. Вывод осуществил, но проблема с обновлением при нажатии на него. Пытался уже по-разному - безуспешно. Далее код, здесь обновление пытался осуществить через broadcast, но что-то ничего...

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
package com.lieryan.urlimagewidget;
 
import com.lieryan.urlimagewidget.R;
 
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Log;
import android.widget.RemoteViews;
import android.widget.Toast;
 
public class URLImageAppWidgetProvider extends AppWidgetProvider {
 
    public static String TAG = "Widget";
    //
    public static String ACTION_WIDGET_RECEIVER = "ActionReceiverWidget";
    //
    public static class Size_1_1 extends URLImageAppWidgetProvider {}
    public static class Size_1_2 extends URLImageAppWidgetProvider {}
    public static class Size_2_2 extends URLImageAppWidgetProvider {}
    public static class Size_4_2 extends URLImageAppWidgetProvider {}
    public static class Size_4_3 extends URLImageAppWidgetProvider {}
 
    
    @Override
    public void onReceive(Context context, Intent intent) {
 
         final String action = intent.getAction();
         if (ACTION_WIDGET_RECEIVER.equals(action)) {
            
                        AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
                         ComponentName thisAppWidget = new ComponentName(context.getPackageName(), URLImageAppWidgetProvider.class.getName());
                         int[] appWidgetIds = appWidgetManager.getAppWidgetIds(thisAppWidget);
                         this.onUpdate(context, appWidgetManager, appWidgetIds);
                         
                        
                       
         } 
         super.onReceive(context, intent);
   }
    
    
 
    
    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager,
            int[] appWidgetIds) {
        super.onUpdate(context, appWidgetManager, appWidgetIds);
        
        
        SharedPreferences urls = context.getSharedPreferences("urls.conf", Context.MODE_PRIVATE);
        for (int id : appWidgetIds) {
            String url = urls.getString("url_" + id, "");
            update(context, appWidgetManager, id, url);
            
            //
            //Создаем новый RemoteViews
            RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.main);
            
          //Подготавливаем Intent для Broadcast
            Intent active = new Intent(context, URLImageAppWidgetProvider.class);
            active.setAction(ACTION_WIDGET_RECEIVER);
            active.putExtra("msg", "Запущен!");
            
          //создаем наше событие
            PendingIntent actionPendingIntent = PendingIntent.getBroadcast(context, 0, active, 0);
            
          //регистрируем наше событие
            remoteViews.setOnClickPendingIntent(R.id.img, actionPendingIntent); 
            
 
            appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);
        }   
 
    }
    
 
 
    
    @Override
    public void onDeleted(Context context, int[] appWidgetIds) {
        super.onDeleted(context, appWidgetIds);
        
        SharedPreferences urls = context.getSharedPreferences("urls.conf", Context.MODE_PRIVATE);
        SharedPreferences.Editor urls_editor = urls.edit();
        for (int id : appWidgetIds) {
            urls_editor.remove("url_" + id);
        }
        
        urls_editor.commit();
        
    }
   
  
    public static void update(final Context context, final AppWidgetManager appWidgetManager, final int id, final String url) {
        new Thread() {
            public void run() {
                Bitmap img = getBitmapFromUrl(url);
                if (img != null) {
                    RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.main);
                    views.setImageViewBitmap(R.id.img, img);
                    appWidgetManager.updateAppWidget(id, views);    
                }
            }
        }.start();
        
                
    }
    
    private static Bitmap getBitmapFromUrl(final String url) {
        try {
            return BitmapFactory.decodeStream(((java.io.InputStream)new java.net.URL(url).getContent()));
        } catch (Exception e) {
            return null;
        }
        
    }
}
Что я сделал не так?
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru