button
から開始して停止できるservice
があります。サービスの受信機を登録する
しかし、service
内には、SMSブロードキャストを受信する受信者を登録したいと考えています。私はservice
が実行中にSMSを待ち受けるだけです。私はregisterReceiver(receiver, intentfilter)
を試しましたが、これは動作しません。私は間違って何をしていますか?
button
から開始して停止できるservice
があります。サービスの受信機を登録する
しかし、service
内には、SMSブロードキャストを受信する受信者を登録したいと考えています。私はservice
が実行中にSMSを待ち受けるだけです。私はregisterReceiver(receiver, intentfilter)
を試しましたが、これは動作しません。私は間違って何をしていますか?
AndroidManifestファイルにアクセス許可を設定する必要があります。ご利用のサービスで動的のonCreate()で、あなたの受信機を登録する必要があります実行しているときにのみ放送を受信する場合
<receiver android:name=".MySMSReciever">
<intent-filter>
<action android:name=
"android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
は
また、onDestroyであなたの受信機の登録を解除することを忘れないことが重要です() 方法!
例:
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.IBinder;
import android.widget.Toast;
public class YourClass extends Service {
private static final String ACTION="android.provider.Telephony.SMS_RECEIVED";
private BroadcastReceiver yourReceiver;
@Override
public IBinder onBind(Intent arg0) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
final IntentFilter theFilter = new IntentFilter();
theFilter.addAction(ACTION);
this.yourReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// Do whatever you need it to do when it receives the broadcast
// Example show a Toast message...
showSuccessfulBroadcast();
}
};
// Registers the receiver so that your service will listen for
// broadcasts
this.registerReceiver(this.yourReceiver, theFilter);
}
@Override
public void onDestroy() {
super.onDestroy();
// Do not forget to unregister the receiver!!!
this.unregisterReceiver(this.yourReceiver);
}
private void showSuccessfulBroadcast() {
Toast.makeText(this, "Broadcast Successful!!!", Toast.LENGTH_LONG)
.show();
}
}
XMLからインテントフィルタを削除し、受信側の唯一の動的登録を行います。 サービスがオフのときに機能しないようにするには、サービスを停止する前にサービスの登録を解除します。ただし、XMLにアクセス許可を追加することを忘れないでください。
この質問は、問題を指定するとより役立ちます。 "これは動作しません" = "受信者は決して呼ばれません"、例えば?それとも、SMS_RECEIVED_ACTIONでは呼び出されませんか?またはエラーがありますか?または... – LarsH