我一直试图让这个程序工作,但到目前为止没有运气.我无法找到我做错的地方.我不确定代码或调试是否有问题.
我正在尝试收到新短信到达时的通知.
这是我的计划:
package Technicaljar.SMSBroadcastReceiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.util.Log;
public class SMSBroadcastReceiver extends BroadcastReceiver {
private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";
private static final String TAG = "SMSBroadcastReceiver";
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG, "Intent recieved: " + intent.getAction());
if (intent.getAction() == SMS_RECEIVED) {
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] pdus = (Object[])bundle.get("pdus");
final SmsMessage[] messages = new SmsMessage[pdus.length];
for (int i …Run Code Online (Sandbox Code Playgroud) 我希望我的应用能够捕获传入的短信.这方面有一些例子.看起来我们只需要这样做:
// AndroidManifest.xml
<receiver android:name=".SMSReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
// SMSReceiver.java
public class SMSReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG, "SMS received.");
....
}
}
Run Code Online (Sandbox Code Playgroud)
它是否正确?我正在给手机发送一些短信,但日志声明永远不会被打印出来.我确实在手机上安装了一些其他短信应用程序,当收到短信时显示弹出窗口 - 他们是否以某种方式阻止了传递给我的应用程序的意图,他们只是完全消耗它?
谢谢
为广播接收机提供最高优先级的整数值是多少?
<intent-filter android:priority="1">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud) 我自己开发了一个短信拦截器Android应用程序,它可以很好地捕获所有垃圾邮件,直到最近谷歌更新了它的环聊应用程序才能使用短信.
问题:我的应用和环聊都收录了短信!即使该消息被我的应用程序阻止并存储在其私有数据库中,它也会出现在环聊应用程序中,因此同时存在于消息应用程序库中.
似乎abortBroadcast()不再起作用了.在环聊更新之前,一切都运转良好.
我也试过摆弄,android:priority但徒劳无功.
好的,我已经尝试了Stack上的所有解决方案,但没有任何效果。我当前的方法从MainActivity注册了“ SmsListener”接收器。我要做的就是初始化onReceive方法。没有错误;它根本不是在广播。我究竟做错了什么?在此处粘贴适用的代码。可能需要的其他任何东西都可以问。
更新:这是一个类似的未解决的问题, 当 我在Android 6.0.1下进行测试时,当Google Hangouts或其他应用收到它时,请听Android传入的SMS。目标Sdk版本为22。最小Sdk为19。值得注意的是,我刚刚在装有Android 4.4.2的LG Optimus GPro上测试了我的原始代码,并且可以正常工作。在装有Android 6.0.1的Nexus上,它仍然无法正常运行。
表现:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.biapps.makin_biscuits">
<uses-sdk android:minSdkVersion="4" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE"/>
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.WRITE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action `android:name="android.service.notification.NotificationListenerService" />`
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".ContactsList">
<intent-filter>
<category android:name="android.intent.category.ALTERNATIVE" />
</intent-filter>
</activity>
<receiver …Run Code Online (Sandbox Code Playgroud)