2011-05-14 9 views
0

I持って、次のアクティビティクラス:アンドロイド:私は活動の内部クラスとして放送受信機を作成するにはどうすればよい

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に入れると、期待どおりに動作します。私はここで間違って何をしていますか?私は私のマニフェストファイルでいくつかの異なる方法で私の受信機を指定する必要がありますか?内部クラスとして放送受信機を作成するにはどうすればよいですか?

答えて

1

アクティビティのメンバーとして持っている場合は、thisのようなアクティビティのコールバック(たとえばonCreate())に登録する必要があります。

+0

私はこれをやりたいとは思っていませんでしたが、他の方法ではできないと思います。 – binW

+1

someones APIを使用している場合は、必要なことをすることではありません。がんばろう ;) –

0

Androidはマニフェストファイルから「.LocationUpdateReceiver」を見つけられません。

マニフェストファイルの代わりに ".TabActivity $ LocationUpdateReceiver"を使用してみてください。内側のクラスのファイル名は、この方法で参照されます。

関連する問題