로드 블록을 실행했습니다. 나는 일련의 강제 폐쇄를 겪고있다. 에뮬레이터에서 프로그램을 실행할 때 위젯을 설치하기 전에 설치가 강제 종료됩니다.위젯 응용 프로그램 강제 설치시 닫습니다.
기본적으로 버튼이있는 위젯을 만들려고했습니다. 버튼은 위젯을 새로운 레이아웃 (메뉴)으로 변경하기 위해 서비스를 시작한다고 가정합니다. 구성 활동도 있습니다.
추가 정보가 필요한지 알려주세요. 나는 android dev 페이지와 Lars Vogels 튜토리얼을 참고로 사용했다. http://www.vogella.de/articles/AndroidWidgets/article.html
감사합니다. RIP SJ. 나는 결코 매킨토시가 아니었지만 당신의 업적을 높이 평가했습니다.
제공자 :
public class CodeSummitWidgetProvider extends AppWidgetProvider{
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
Intent intent = new Intent(context.getApplicationContext(), TestService.class);
PendingIntent pendingIntent = PendingIntent.getService(context.getApplicationContext(), 0, intent, 0);
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.codesummit_widget_provider_layout);
views.setOnClickPendingIntent(R.id.tomenu, pendingIntent);
appWidgetManager.updateAppWidget(appWidgetIds, views);
context.startService(intent);
}
}
본 서비스 :
public class TestService extends Service {
@Override
public void onStart(Intent intent, int startId) {
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(this.getApplicationContext());
int[] appWidgetIds = intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS);
if (appWidgetIds.length > 0) {
for(int widgetId : appWidgetIds) {
RemoteViews remoteViews = new RemoteViews(getPackageName(), R.layout.codesummit_widget_menu_layout);
appWidgetManager.updateAppWidget(widgetId, remoteViews);
}
stopSelf();
}
super.onStart(intent, startId);
}
매니페스트 :
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.main.codesummit"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<receiver android:name="CodeSummitWidgetProvider">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/codesummit_appwidget_info" />
</receiver>
<activity android:name=".CodeSummitWidgetConfigure">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
</intent-filter>
</activity>
<service android:name=".TestService" />
</application>
로그 캣 :
,536,10-06 23:59:04.925: INFO/ActivityManager(65): Start proc com.main.codesummit for broadcast com.main.codesummit/.CodeSummitWidgetProvider: pid=312 uid=10036 gids={}
10-06 23:59:05.596: DEBUG/AndroidRuntime(312): Shutting down VM
10-06 23:59:05.606: WARN/dalvikvm(312): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
10-06 23:59:05.665: ERROR/AndroidRuntime(312): FATAL EXCEPTION: main
10-06 23:59:05.665: ERROR/AndroidRuntime(312): java.lang.RuntimeException: Unable to start service [email protected] with Intent { cmp=com.main.codesummit/.TestService }: java.lang.NullPointerException
10-06 23:59:05.665: ERROR/AndroidRuntime(312): at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3063)
10-06 23:59:05.665: ERROR/AndroidRuntime(312): at android.app.ActivityThread.access$3600(ActivityThread.java:125)
10-06 23:59:05.665: ERROR/AndroidRuntime(312): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2096)
10-06 23:59:05.665: ERROR/AndroidRuntime(312): at android.os.Handler.dispatchMessage(Handler.java:99)
10-06 23:59:05.665: ERROR/AndroidRuntime(312): at android.os.Looper.loop(Looper.java:123)
10-06 23:59:05.665: ERROR/AndroidRuntime(312): at android.app.ActivityThread.main(ActivityThread.java:4627)
10-06 23:59:05.665: ERROR/AndroidRuntime(312): at java.lang.reflect.Method.invokeNative(Native Method)
10-06 23:59:05.665: ERROR/AndroidRuntime(312): at java.lang.reflect.Method.invoke(Method.java:521)
10-06 23:59:05.665: ERROR/AndroidRuntime(312): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
10-06 23:59:05.665: ERROR/AndroidRuntime(312): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
10-06 23:59:05.665: ERROR/AndroidRuntime(312): at dalvik.system.NativeStart.main(Native Method)
10-06 23:59:05.665: ERROR/AndroidRuntime(312): Caused by: java.lang.NullPointerException
10-06 23:59:05.665: ERROR/AndroidRuntime(312): at com.main.codesummit.TestService.onStart(TestService.java:23)
10-06 23:59:05.665: ERROR/AndroidRuntime(312): at android.app.Service.onStartCommand(Service.java:420)
10-06 23:59:05.665: ERROR/AndroidRuntime(312): at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3053)
10-06 23:59:05.665: ERROR/AndroidRuntime(312): ... 10 more
10-06 23:59:10.696: INFO/Process(312): Sending signal. PID: 312 SIG: 9
10-06 23:59:10.795: INFO/ActivityManager(65): Process com.main.codesummit (pid 312) has died.
도움을 받으려면 오류 로그를 게시해야합니다. –
LogCat에 올라온 내용을 게시했습니다. 이게 너가 찾고있는거야? 그렇지 않다면 좀 더 구체적으로 읽을 수 있도록 좀 더 읽을 수 있습니다. 감사합니다. – evt