小部件中的setOnClickPendingIntent不适用于Nokia X.

时间:2014-06-06 14:14:11

标签: android android-widget nokiax

我正在创建一个显示电池百分比的简单小部件。它每30分钟更新一次状态。它工作正常。但是,如果用户点击小部件,我还想更新其状态。我已经为它实现了代码,它在Emulator上工作正常(Genymotion - 三星Galaxy S3 - Android 4.1.2)&在真实设备上(摩托罗拉Moto E - Android 4.4.2)。但是,onClick部分不适用于诺基亚X.在logcat中也没有错误。

我尝试在不同的元素(imageview,layout,textview等)上设置监听器,但是没有在点击时调用intent。我还查看了其他第三方小部件(Whatsapp,Clock)&他们的点击事件工作正常。那么,这可能是背后的原因呢?

该代码用于设置onclick意图:

public void onUpdate(Context context, AppWidgetManager appWidgetManager, int appWidgetIds[]) {
    super.onUpdate(context, appWidgetManager, appWidgetIds);                

    for(int i=0; i<appWidgetIds.length;i++) {
        int appWidgetId = appWidgetIds[i];
        Intent batteryCheckerIntent = new Intent(context, Main.class);
        batteryCheckerIntent.setAction(WIDGET_CLICKED);

        batteryCheckerIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);

        PendingIntent batteryCheckerPendingIntent = PendingIntent.getBroadcast(
                context, 0, batteryCheckerIntent,
                PendingIntent.FLAG_CANCEL_CURRENT);

        RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.main);

        remoteViews.setOnClickPendingIntent(R.id.batteryStatusImageView, batteryCheckerPendingIntent);

        appWidgetManager.updateAppWidget(appWidgetId, remoteViews);         
    }       
}

@Override
public void onReceive(Context context, Intent intent) {
    super.onReceive(context, intent);
    Log.i(this.getClass().getName(), "OnReceive is called");    
    if(intent.getAction()==WIDGET_CLICKED) {

        Intent batteryCheckerIntent = new Intent(context, BatteryLevelCheckerService.class);
        context.startService(batteryCheckerIntent);

    } else if(intent.getAction()=="com.ashishtanna.batterystatus.CHECK_BATTERY_LEVEL") {
        Log.i("CHECK BATTERY", "CHECK BATTERY called");

        //If i uncomment the below code, the intent set for onclick event (in the if part) will stop working, it won't even call the onReceive method for onClick

        /*Intent batteryCheckerIntent = new Intent(context, BatteryLevelCheckerService.class);
        context.startService(batteryCheckerIntent);*/
    }
}

更新:

我尽我所能,但它无法在诺基亚X平台上运行。它看起来像一个bug,因为它只允许一个意图运行。如果我设置每30分钟打开一个服务的意图,它将停止为onclick事件设置的意图,如果我删除它,onclick意图将再次开始工作。 (现在,向诺基亚报告此问题/错误。)

0 个答案:

没有答案