2011-12-04 7 views
1

위젯을 개발하려고했지만 마지막 단계에 있습니다. 장치 부팅 후 위젯에 PendingIntent를 다시 할당하는 방법이 하나뿐입니다.장치 부팅 후 위젯의 PendingIntent를 설정하는 방법

내가 BOOT_COMPLETED 방송 수신 브로드 캐스트 리시버가 :

public static final String TAG = "BootReceiver"; 
private Context c; 
@Override 
public void onReceive(Context c, Intent i) { 
    Log.i(TAG, "Received BOOT_COMPLETED broadcast!"); 

    Intent readPrefsAfterBoot = new Intent(c, my widget class); 
    readPrefsAfterBoot.setAction(* my custom action *); 
    c.sendBroadcast(readPrefsAfterBoot); 
} 

제의 AppWidgetProvider 그 사용자 지정 작업을 수신 이렇게 있습니다 :

** reading saved data from SharedPreferences ** 

       RemoteViews rv = new RemoteViews(context.getPackageName(), my widget layout); 

       AppWidgetManager awm = AppWidgetManager.getInstance(context); 

       Intent intent = new Intent(context,my widget class); 
       intent.setAction(* another custom action *); 
       PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0); 
       rv.setOnClickPendingIntent(my button, pi); 
       awm.updateAppWidget(appWidgetIds[i], rv); 

그 중 하나를 작동하지 않습니다 또는 힘은 어떤 이유로 폐쇄하는 내가 분석 할 수 없다 ...

+0

브로드 캐스트가 수신되고 인 텐트가 호출되면 로그를 사용하여 디버그를 시도하십시오. 그런 다음 logcat을 사용하여 전화를 다시 시작하십시오. – Warpzit

+0

Eclipse에서 'adb logcat', DDMS 또는 DDMS 퍼스펙티브를 사용하여 LogCat을보고 "강제 종료"와 관련된 스택 추적을 검토하십시오. – CommonsWare

+0

많은 앱을 설치하고 내 위젯을 많이 사용하기 때문에 다소 시간이 걸릴 것입니다 ... 하지만 그 동안에는 문제가 위젯 클래스에 사용되는 컨텍스트에서 발생했을 가능성이 있습니까? – Netanel

답변

0

위젯이 부팅 후 처음 시작할 때 onUpdate() 메서드가 호출된다. 내 애플 리케이션의 PendingIntent.

또한 PendingIntent에 문제가있는 경우 (제 경우에는 추가 데이터가 올바르게 전달되지 않음) 전화를 다시 시작해야합니다.

관련 문제