2012-04-27 2 views
1

私は最初のアンドロイドウィジェットを構築しようとしています。私は何かをクリックするとサービスを利用している何かをクリックしたシンプルなアイコンです。すべてがうまくいっていますが、私は理解していない小さな問題があります。これは正常に動作します:別のファイルのAndroidサービスが動作しません

CLASS MYWIDGET.JAVA 
------------------------------------------------ 
public class MyWidget extends AppWidgetProvider { 

@Override 
public void onReceive(Context context, Intent intent) { 
    if (intent.getAction() == null) context.startService(new Intent(context, UpdateService.class)); 
    else super.onReceive(context, intent); 
} 

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

public static class UpdateService extends IntentService { 

    public UpdateService() { 
     super("MyWidget$UpdateService"); 
    } 

    @Override 
    protected void onHandleIntent(Intent arg0) { 
     ComponentName me = new ComponentName(this, MyWidget.class); 
     AppWidgetManager manager = AppWidgetManager.getInstance(this); 
     manager.updateAppWidget(me, buildUpdate(this)); 
    } 

    private RemoteViews buildUpdate (Context context) { 
     // i'm doing something here 
    } 
} 

}

が、私は別のファイルにUpdateServiceを抽出するとき、それは動作しません。

CLASS MYWIDGET.JAVA 
------------------------------------------------ 
public class MyWidget extends AppWidgetProvider { 

@Override 
public void onReceive(Context context, Intent intent) { 
    if (intent.getAction() == null) context.startService(new Intent(context, UpdateService.class)); 
    else super.onReceive(context, intent); 
} 

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

}

CLASS UPDATESERVICE.JAVA 
------------------------------- 
public class UpdateService extends IntentService { 

    public UpdateService() { 
     super("UpdateService"); 
    } 

    @Override 
    protected void onHandleIntent(Intent arg0) { 
     ComponentName me = new ComponentName(this, MyWidget.class); 
     AppWidgetManager manager = AppWidgetManager.getInstance(this); 
     manager.updateAppWidget(me, buildUpdate(this)); 
    } 

    private RemoteViews buildUpdate (Context context) { 
     // i'm doing something here 
    } 
} 

}

このバージョンではない仕事 - ウィジェットアイコンをクリックすると、更新サービスのメソッドが呼び出されることはありません。問題はどこにあるはずですか?

答えて

1

サービスクラスを移動または名前を変更する場合は、この変更をAndroidManifest.xmlに反映させる必要があります。

+0

ええ(多分u'll名自体の前に右のパッケージ名を設定する必要があります)、私はuが書いた同じ瞬間にこのことに気づい;)何愚かな間違い...私は仕事中にもっと休憩を取るべきです;)thx、問題解決 – qkx

1

あなたのmanifest.xmlに

<service android:name=".UpdateService" /> 

を追加