-1

我的应用程序读取传入的短信。我已经在 Manifest 中实现了接收器,添加了权限和接收器,但是当收到 SMS 时,我在 logcat 中收到以下消息。

12-29 13:25:00.081 2030-2044/? W/BroadcastQueue: Permission Denial: 从 com.android.phone (pid=5234, uid=1001) 广播 Intent { act=android.provider.Telephony.SMS_RECEIVED flg=0x8000010 (has extras) } 没有从 uid 10665 导出接收器 com.tatvic.vatsal.test_uninstall_tracking/com.tatvic.lib.uit.SmsReceiver

显现 :

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

<application
    ....>
    <receiver android:name=".SmsReceiver"
        android:exported="false">
        <intent-filter android:priority="1000">
            <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
        </intent-filter>
    </receiver>
</application>

短信接收者:

public class SmsReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(Telephony.Sms.Intents.SMS_RECEIVED_ACTION) && intent.getExtras() != null) {
            Log.d("MessageReceived", "MessageReceived");
        }
    }
}

我在 Stackoverflow 上读过类似的帖子,但没有任何帮助。我已经在 Marshmallow OS 上对此进行了测试,并允许了 SMS 权限。

如何在我的应用程序中收到短信?

编辑:

当应用程序打开或在设置文件标签后exported = true处于后台时,我可以在我的应用程序中接收短信。但是当应用程序关闭时,我在 logcat 中收到以下消息并且无法接收短信receiverMenifest

12-29 14:28:27.111 2030-2044/? I/ActivityManager:启动 proc 8428:com.tatvic.vatsal.test_uninstall_tracking/u0a666 用于广播 com.tatvic.vatsal.test_uninstall_tracking/com.tatvic.lib.uit.SmsReceiver

4

1 回答 1

0

由于您的接收器应该在您的应用程序之外调用,因此您应该将其设置android:exportedtrue.

如果此组件可供其他应用程序使用,则设置为 true。来自android:exported, <activity>, <receiver>,<service><provider>标签。

于 2016-12-29T08:26:55.417 回答