如何在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'
}
}
}
答案 0 :(得分:0)
因为您的targetSdkVersion = 26,默认情况下您的所有权限都设置为不允许,当您没有RECEIVE_SMS权限时,您的广播不起作用。所以您必须选择: 1.将targetSdkVersion设置为23以下 要么 2.在运行时管理permssion。
正如android官方网站所说:
如果设备运行的是Android 6.0(API级别23)或更高版本,并且应用程序的targetSdkVersion为23或更高版本,则用户在安装时未收到任何应用程序权限的通知。您的应用必须要求用户在运行时授予危险权限
在this链接
中查找更多信息