广播接收器,用于在基于三星 - 安卓的智能手机上传入短信



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

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

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>


主要活动.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);
}
}


传入短信.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!");
}
}

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

在该网站中有以下部分:

注意:并非所有支持 Android 的设备都提供这些 API。

我要辞职了,我真的在想三星Galaxy A5 2017在我的支配下不允许我做我想做的事。
代码中是否有我忘记的内容,或者我真的无法在此手机上开发此应用程序?

终于,经过两天的工作,我能够理解这个问题。如果停用并重新启用 SMS 权限,则问题已解决。这显然是Android Oreo上的一个错误。

甚至更好: 我修改了代码如下:

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

最新更新