2011-11-07 3 views
4

RemoteViews를 사용하는 데 문제가 있습니다. 단순히 배터리 수준을 보여주는 위젯을 만들고 싶습니다. 나는 이미 다른 모든 것들을 다 했어. 내가 응용 프로그램에게 오류 및 BTW R.id.level 없음 업데이트를 시작하지 않을 때Android : BatteryLevel 위젯이 업데이트되지 않습니다.

public class BatteryLevel extends AppWidgetProvider{ 

    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds){ 
     context.startService(new Intent(context, BatteryMonitorReceiver.class)); 
    } 

    public static class BatteryMonitorReceiver extends Service{ 
     private int currentBatteryLevel = 0; 

     private BroadcastReceiver batteryReceiver = new BroadcastReceiver(){ 
      @Override 
      public void onReceive(Context context, Intent intent){ 
       currentBatteryLevel = intent.getIntExtra("level", 0); 
      } 
     }; 

     @Override 
     public void onStart (Intent intent, int startId) {   
      registerReceiver(this.batteryReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); 
      RemoteViews updateViews = new RemoteViews(getPackageName(), R.layout.main); 
      updateViews.setTextViewText(R.id.level, String.valueOf(currentBatteryLevel)); 

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

     @Override 
     public IBinder onBind(Intent intent){ 
      return null; 
     } 
    } 
}

:

여기 내 클래스입니다.

무엇이 잘못 되었나요?

참고 : 서비스가 내부 클래스입니다 7.

답변

2

때문에 API 버전, 난 당신이 필요 안드로이드 매니페스트, 그것을 선언하지 않은 것 같아요. onStart을 사용하면 안되며 더 이상 사용되지 않습니다. onStartCommand을 사용하십시오. 그리고 당신은 당신의 수신기를 등록하는 것을 잊었습니다. ...

+0

Thx for answer. 그러나 여전히 문제가 있습니다. 업데이트 된 매니페스트 및 onStart를 onStartCommand로 변경했지만 현재 대체하지는 않습니다. –

+0

매개 변수가 다릅니다. 여기를 읽으십시오 : http://developer.android.com/reference/android/app/Service.html – Jong

관련 문제