And*_*ers 6 sms android kotlin
我知道有很多这样的问题已经浮出水面,我已经尝试了所有我能遇到的问题,但我仍然无法让它发挥作用。
我的问题是 BroadcastReceiver onReceive 似乎永远不会被调用。我的代码如下:
class SMSReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
Log.d("BroadcastReceiver", "onReceive")
if (intent.action == Telephony.Sms.Intents.SMS_RECEIVED_ACTION) {
Log.d("BroadcastReceiver", "SMS received")
// Will do stuff with message here
}
}
Run Code Online (Sandbox Code Playgroud)
日志消息永远不会出现。
AndroidManifest.xml
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.RECEIVE_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/Theme.AppCompat.Light.NoActionBar">
<activity android:name=".main.MainActivity"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
<activity android:name=".setup.SetupActivity"
android:screenOrientation="portrait">
</activity>
<receiver
android:name=".SMSReceiver"
android:enabled="true"
android:exported="true">
<intent-filter android:priority="1000">
<action
android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
</application>
Run Code Online (Sandbox Code Playgroud)
在我的 mainActivity 中,我尝试了多种方法来实现这一点,但目前只有:
var smsReceiver = SMSReceiver()
Run Code Online (Sandbox Code Playgroud)
我很感激我能得到的任何提示,如果有任何代码示例是用 Kotlin 编写的,那也会很棒。:)
不要在 onReceive() 内部使用 if 检查
class SMSReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
Log.d("BroadcastReceiver", "onReceive")
Log.d("BroadcastReceiver", "SMS received")
// Will do stuff with message here
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4804 次 |
| 最近记录: |