0

次のアクティビティクラスがあります。

public class Main extends TabActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    public class LocationUpdateReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "broadcast received", Toast.LENGTH_LONG).show();
        Log.e("ADNAN", "received");
    }

    }

}

マニフェストファイルの次のエントリ:

<receiver android:name=".LocationUpdateReceiver" android:enabled="true"/>

次のコードを使用して、クラスにブロードキャストを送信します。

Intent intent = new Intent(this,LocationUpdateReceiver.class);
        sendBroadcast(intent);

しかし、受信機は放送を受信しません。ただし、レシーバークラスを独自のファイル(LocationUpdateReceiver.java)に取り込むと、期待どおりに機能します。私はここで何が間違っているのですか?マニフェストファイルでレシーバーを別の方法で指定する必要がありますか?内部クラスとしてブロードキャストレシーバーを作成するにはどうすればよいですか?

4

2 に答える 2

1

それをActivityのメンバーにしたい場合は、このonCreate()ようなActivityのコールバック(たとえば)のいくつかに登録する必要があります。

于 2011-05-14T11:08:10.890 に答える
0

Androidは、マニフェストファイルから「.LocationUpdateReceiver」を検出しません。これは、「。LocationUpdateReceiver」が存在しないためです(機能したと言ったように作成しない限り)。

それが機能するかどうかはわかりませんが、マニフェストファイルで代わりに「.TabActivity$LocationUpdateReceiver」を使用してみてください。内部クラスのファイル名はこの方法で参照されます。

于 2011-05-14T12:00:54.243 に答える