【发布时间】:2020-02-23 22:17:30
【问题描述】:
我试图围绕 Android BroadcastReceiver 进行思考,但没有成功。我正在尝试实现一些简单的东西:
- 收听收到的短信
- 检查号码是否保存
- 如果保存了就做点什么
到目前为止,我注册/创建了 BroadcastReceiver,并且能够捕获传入的消息。我是通过以下方式做到的:
public class SmsReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")){
//do things
}
}
}
我通过以下方式在Manifest文件中注册了receiver:
<receiver
android:name=".SmsReceiver"
android:permission="android.permission.BROADCAST_SMS"
android:exported="true">
<intent-filter android:priority="2147483647" >
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
到目前为止一切都很好。 但是,这里有个大问题:我还创建了一个名为 'UserManager' 的类,其中包含一些基本任务,例如:添加新用户、删除用户、检查用户是否存在等。
我将用户存储在 HashMap (phoneNumber, Name) 中。
我的问题是:
如何将对象传递给我的广播接收器? (我希望能够从“UserManager”类访问 HashMap)
我发现了很多关于广播接收器的主题。他们中的一些人说有几种声明广播接收器的方法。例如,您可以按照我的方式进行操作(在清单中声明),或者您可以做更多的事情,嗯……基于上下文?就像声明它 BroadcastReceiver br = new MyBroadcastReceiver() 并向它注册 intentFilters。有什么区别?我应该使用哪一个?
- 有什么叫做“良好实践”的东西吗?我应该注意什么?您是否知道任何材料清楚地解释了使用广播接收器的不同方式?
【问题讨论】: