Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SmsBroadcast接收器不工作_Java_Android_Broadcastreceiver_Sms - Fatal编程技术网

Java SmsBroadcast接收器不工作

Java SmsBroadcast接收器不工作,java,android,broadcastreceiver,sms,Java,Android,Broadcastreceiver,Sms,我正在编写一个应用程序来监听收到的短信。我在网上查了很多问题和答案,但仍然不起作用。我的代码: My AndroidManifest.xml: <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="superapp.networkapp"> <!--send and read SMS-

我正在编写一个应用程序来监听收到的短信。我在网上查了很多问题和答案,但仍然不起作用。我的代码:

My AndroidManifest.xml:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="superapp.networkapp">
<!--send and read SMS-->
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.RECEIVE_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=".activity.MainActivity"
        android:configChanges="keyboardHidden|orientation|screenSize"
        android:screenOrientation="portrait">
    </activity>

    <receiver android:name=".utility.tool.SmsReceiver"  >
        <intent-filter android:priority="2147483647">
            <action android:name="android.provider.Telephony.SMS_RECEIVED" />
        </intent-filter>
    </receiver>
    <activity
        android:name=".activity.StartTestActivity"
        android:configChanges="keyboardHidden|orientation|screenSize"
        android:screenOrientation="portrait"
        tools:replace="screenOrientation">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>
我有3台设备:一台三星s7和一台索尼Xperia Z5 Compact都使用安卓7.0,一台三星s6使用安卓6.0.1。当我向这些设备发送消息时,只有默认的messenger应用程序显示通知


我检查过其他人的答案和问题。似乎默认的messenger应用程序具有更高的
intentFilter
优先级,或者它们调用
abortBroadcast()
。我还将我的意图的优先级设置为Android文档中定义的最大整数或999,但还没有成功。

您可以尝试一下,我也有同样的问题,通过添加权限进行了修复。并且不需要以编程方式注册接收者,但需要请求权限
Manifest.permission.READ\u SMS

    <receiver
        android:name=".name"
        android:permission="android.permission.BROADCAST_SMS">
        <intent-filter>
            <action android:name="android.provider.Telephony.SMS_RECEIVED" />
        </intent-filter>
    </receiver>


您注册了接收器了吗?是的。我在我的AndroidManifest中注册它。XmlI还尝试以编程方式注册接收者,但仍然没有成功。让我们在应用程序设置中手动检查权限是否真的允许。我投票将此问题作为主题外的问题结束,因为原因是我安装了错误的apk
   private static final List<String> permissions = Arrays.asList(
            Manifest.permission.SEND_SMS,
            Manifest.permission.READ_SMS,
            Manifest.permission.RECEIVE_SMS);
   private void askPermissions() {
        if (!hasAllPermissions())
            ActivityCompat.requestPermissions(this, permissions.toArray(new String[0]), 69);
    }
    private boolean hasPermission(String permission) {
        return ContextCompat.checkSelfPermission(this, permission) == PackageManager.PERMISSION_GRANTED;
    }

    private boolean hasAllPermissions() {
        for (String permission : permissions) {
            if (!hasPermission(permission)) return false;
        }
        return true;
    }
    <receiver
        android:name=".name"
        android:permission="android.permission.BROADCAST_SMS">
        <intent-filter>
            <action android:name="android.provider.Telephony.SMS_RECEIVED" />
        </intent-filter>
    </receiver>