Sms接收器为Android 7牛轧糖或更高

时间:2018-06-12 17:28:42

标签: android

如何在Android 7或8版本上通过广播接收器接收和阅读短信?

我遵循的教程不适用于版本7及更高版本。

清单

<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.SEND_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: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=".SmsBroadcast" android:permission="android.permission.BROADCAST_SMS" android:exported="true">
        <intent-filter android:priority="5822" >
            <action android:name="android.provider.Telephony.SMS_RECEIVED" />
        </intent-filter>
    </receiver>
</application>

app gradle

android {
compileSdkVersion 26
defaultConfig {
    applicationId "com.prixwerkz.smsreceiver"
    minSdkVersion 15
    targetSdkVersion 26
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

}

1 个答案:

答案 0 :(得分:0)

因为您的targetSdkVersion = 26,默认情况下您的所有权限都设置为不允许,当您没有RECEIVE_SMS权限时,您的广播不起作用。所以您必须选择: 1.将targetSdkVersion设置为23以下 要么 2.在运行时管理permssion。

正如android官方网站所说:

  

如果设备运行的是Android 6.0(API级别23)或更高版本,并且应用程序的targetSdkVersion为23或更高版本,则用户在安装时未收到任何应用程序权限的通知。您的应用必须要求用户在运行时授予危险权限

this链接

中查找更多信息