我创建了一个广播接收器
在 list 中
<receiver android:name="SMSMonitor">
<intent-filter android:priority="100">
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
类(class):
public class SMSMonitor extends BroadcastReceiver {
private static final String ACTION = "android.provider.Telephony.SMS_RECEIVED";
@Override
public void onReceive(Context context, Intent intent) {
if (intent != null && intent.getAction() != null && ACTION.compareToIgnoreCase(intent.getAction()) == 0) {
Object[] pduArray = (Object[]) intent.getExtras().get("pdus");
SmsMessage[] messages = new SmsMessage[pduArray.length];
for (int i = 0; i < pduArray.length; i++) {
messages[i] = SmsMessage.createFromPdu((byte[]) pduArray[i]);
}
StringBuilder bodyText = new StringBuilder();
for (SmsMessage message : messages) {
bodyText.append(message.getMessageBody());
}
String body = bodyText.toString();
Observer.getInstance().send(new SmsEvent(body));
abortBroadcast();
}
}
启动时,我的应用程序接收器开始工作。但是我在 Activity “开始”和“停止”中有 2 个按钮。我想在按下“开始”按钮时启动接收器并在按下“停止”按钮时停止。我该怎么做?
最佳答案
在开始的onClick()
中调用此方法
public void enableBroadcastReceiver()
{
ComponentName receiver = new ComponentName(this, SMSMonitor.class);
PackageManager pm = this.getPackageManager();
pm.setComponentEnabledSetting(receiver,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
Toast.makeText(this, 'Enabled broadcast receiver', Toast.LENGTH_SHORT).show();
}
在停止的onClick()
中调用此方法
// This method disables the Broadcast receiver registered in the AndroidManifest file.
* @param view
*/
public void disableBroadcastReceiver(){
ComponentName receiver = new ComponentName(this, SMSMonitor class);
PackageManager pm = this.getPackageManager();
pm.setComponentEnabledSetting(receiver,
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
Toast.makeText(this, 'Disabled broadcst receiver', Toast.LENGTH_SHORT).show();
}
关于android - 从 Activity 开始和停止 broadcastReceiver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32753703/