簡體   English   中英

Android Widget失去待定意圖

[英]Android Widget lose pending intent

我是Android的新手,我有點問題,我已經搜索了多個論壇,什么都沒有..

我有一個顯示電池的簡單小部件,點擊它打開一個彈出主題的活動。

所以我有這個太文件,可能有些方法錯了?

WidgetProvider:

public class Widget extends AppWidgetProvider {

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
        super.onReceive(context, intent);
        context.startService(new Intent(context, Service.class));
    }

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager,
            int[] appWidgetIds) {
        // TODO Auto-generated method stub
        ComponentName thisWidget = new ComponentName(context,
                Widget.class);
        AppWidgetManager manager = AppWidgetManager.getInstance(context);

        int[] allWidgetIds = appWidgetManager.getAppWidgetIds(thisWidget);
        for (int widgetId : allWidgetIds) {

            RemoteViews updateViews = new RemoteViews(context.getPackageName(),
                    R.layout.widget_layout);

            Intent intent = new Intent(context, Popup.class);
            PendingIntent pendingIntent = PendingIntent.getActivity(context, 0,
                    intent, 0);
            updateViews.setOnClickPendingIntent(R.id.widget_layout,
                    pendingIntent);

            manager.updateAppWidget(widgetId, updateViews);

        }
    }

    @Override
    public void onDisabled(Context context) {
        // TODO Auto-generated method stub
        context.stopService(new Intent(context, Service.class));
        super.onDisabled(context);
    }
}

在我的服務上:

public class Service extends Service {

    private int batteryLevel = 0;
    RemoteViews updateViews;

    private BroadcastReceiver receiver = new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {
                batteryLevel = intent.getIntExtra("level", 0);
                updateViews = new RemoteViews(context.getPackageName(),
                        R.layout.widget_layout);

                updateViews.setImageViewBitmap(R.id.imgBattery,
                buildBitmap(batteryLevel + "%", context));

                ComponentName thisWidget = new ComponentName(context,
                        Widget.class);
                AppWidgetManager manager = AppWidgetManager
                        .getInstance(context);
                manager.updateAppWidget(thisWidget, updateViews);
            }
        }
    };

    @Override
    public void onCreate() {
        // TODO Auto-generated method stub
        super.onCreate();
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction(Intent.ACTION_BATTERY_CHANGED);
        registerReceiver(receiver, intentFilter);
    }

    @Override
    public IBinder onBind(Intent intent) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void onDestroy() {
        // TODO Auto-generated method stub
        unregisterReceiver(Receiver);
        super.onDestroy();
    }
}

有人可以幫幫我嗎? 除此之外,該服務還有30MB ......運行時

讓我們為您輕松:

private BroadcastReceiver receiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {
            batteryLevel = intent.getIntExtra("level", 0);
            updateViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout);

            updateViews.setImageViewBitmap(R.id.imgBattery, buildBitmap(batteryLevel + "%", context));

            Intent intent = new Intent(context, Popup.class);
            PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
            updateViews.setOnClickPendingIntent(R.id.widget_layout, pendingIntent);

            ComponentName thisWidget = new ComponentName(context, Widget.class);
            AppWidgetManager manager = AppWidgetManager.getInstance(context);
            manager.updateAppWidget(thisWidget, updateViews);
        }
    }
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM