簡體   English   中英

如何使用廣播接收器?

[英]How can i use Broadcast Receiver?

我想使用廣播接收器收到消息時收到通知。 我寫了這段代碼,但是沒有用;

我在AndroidManifest類中添加了此代碼;

<receiver android:name=".receiver.SMSReceiver" >
    <intent-filter>
        <action android:name="android.provider.Telephony.SMS_RECEIVED" />
    </intent-filter>
</receiver>

還有我的SMSReceiver類;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.util.Log;
import android.widget.Toast;

public class SMSReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

    Bundle pudsBundle = intent.getExtras();
    Object[] pdus = (Object[]) pudsBundle.get("pdus");
    SmsMessage messages = SmsMessage.createFromPdu((byte[]) pdus[0]);
    Toast.makeText(context, "New SMS: " + messages.getMessageBody(),
        Toast.LENGTH_LONG).show();
    Log.d(getClass().getName().toString(), "SMS Arrived");
    }

}

SMS到達時,此代碼必須向我顯示一條Toast消息。 我該如何解決這個問題? 謝謝。

您必須具有以下權限:

<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />

如果您想發送短信,則需要獲得許可:

<uses-permission android:name="android.permission.SEND_SMS" />

我認為您需要注冊您的廣播接收器。 希望能有所幫助。

@Override
public void onResume() {
   super.onResume();

   // Register mMessageReceiver to receive messages.
   LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver,
    new IntentFilter("my-event"));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM