我曾试图绕过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
}
}
}
我通过以下方式在清单文件中注册了接收者:
<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中(电话号码,名称)。
我的问题是:
如何将对象传递给我的BroadcastReceiver? (我希望能够从“ UserManager”类访问HashMap)
我发现了许多有关BroadcastReceivers的主题。他们中的一些人说,有两种声明广播接收器的方法。例如,您可以像我一样做(在清单中声明),或者可以做更多……基于上下文?就像将其声明为BroadcastReceiver br = new MyBroadcastReceiver()并向其注册intentFilters一样。有什么区别?我应该使用哪一个?
getApplicationContext