【发布时间】:2017-10-12 22:32:00
【问题描述】:
您好,我正在尝试捕获短信内容并在我的应用程序中使用,所以我制作了一个带有权限和清单的 BroadcastReceiver 但是当设备接收到短信时,我的代码没有运行,这意味着 BroadcastReceiver 没有触发. 我也查了这里内外的很多文章,有一些:
Android Sms Receiver Result to Main Activity SMS receiver didn't work
Android SMS Receiver not working
Broadcast Receiver not working for SMS
这是我的清单的一部分:
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<application.
...
...
<receiver android:name="com.example.android.receiver.SmsReceiver"
android:permission="android.permission.BROADCAST_SMS">
<intent-filter android:priority="2147483647">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
</application>
这是我的接收器
public class SmsReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "SMS Received!", Toast.LENGTH_LONG).show();
}
}
我也尝试在活动 onCreate() 中动态注册接收器,但没有任何改变
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("android.provider.Telephony.SMS_RECEIVED");
intentFilter.setPriority(2147483647);
registerReceiver(new SmsReceiver(), intentFilter);
有谁知道问题出在哪里?它应该只是 Toast 收到一条消息,以便我可以继续工作,但接收器似乎甚至没有触发
【问题讨论】:
-
编译时有什么错误吗?我的意思是你
manifest中的那些点。他们真的在那里吗?您的应用中有任何活动吗? -
此外,在 Android 3.1 及更高版本上,用户必须启动您的一项活动,然后任何清单注册的
BroadcastReceiver才能工作。 -
没有错误我在我的设备上运行应用程序,没有点只有常见的属性,如图标或名称等。是的,我当然有几个活动,是的,我运行应用程序并打开那个活动注册接收者。
-
安装后需要先打开应用,广播接收器才能工作。
-
是的,正如我所说,我先打开应用程序
标签: java android broadcastreceiver sms intentfilter