在基于Samsung-Android的智能手机上接收SMS的BroadcastReceiver

时间:2018-07-06 14:59:54

标签: android broadcastreceiver sms samsung-mobile receiver

我在发布此问题之前检查了所有stackoverflow帖子,因为它们没有帮助。 我正在使用此文档https://developer.android.com/reference/android/provider/Telephony?hl=it来了解如何构建一个用于侦听传入SMS的应用程序,但是对于所有stackoverflow帖子来说,这似乎都不起作用。

以下是我刚刚开发的内容:

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="abc">

    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <uses-permission android:name="android.permission.READ_SMS" />
    <uses-permission android:name="android.permission.SEND_SMS" />
    <uses-permission android:name="android.permission.WRITE_SMS" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <receiver
            android:name=".IncomingSMS">
            <intent-filter>
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
            </intent-filter>
        </receiver>
    </application>
</manifest>


MainActivity.java

package abc;

import android.Manifest;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.SEND_SMS},1);
        ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.READ_SMS},2);
        ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.RECEIVE_SMS},3);
    }
}


IncomingSMS.java

package abc;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class IncomingSMS extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        System.out.println("It works!");
    }
}

不幸的是,当我收到一条新短信时,它没有写“它有效!”

在该网站中有以下部分:

  

注意:这些API并非在所有Android设备上都可用。

我辞职了,我真的在想,我支配的Samsung Galaxy A5 2017不允许我做我想做的事情。
代码中有什么我遗忘的东西还是真的无法在此手机上开发此应用程序?

1 个答案:

答案 0 :(得分:0)

最后,经过两天的工作,我能够理解问题所在。如果您停用并重新启用SMS权限,则可以解决此问题。显然,这是Android Oreo上的错误。

更好: 我将代码修改如下:

ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.SEND_SMS, Manifest.permission.RECEIVE_SMS, Manifest.permission.READ_SMS},1);