权限拒绝:广播Intent act = android.provider.Telephony.SMS_RECEIVED

时间:2016-12-29 08:13:41

标签: android android-manifest android-permissions android-broadcastreceiver android-sms

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

  

12-29 13:25:00.081 2030-2044 /? W / BroadcastQueue:权限拒绝:   广播Intent {act = android.provider.Telephony.SMS_RECEIVED   来自com.android.phone的flg = 0x8000010(有额外内容)}(pid = 5234,   uid = 1001)由于接收器而未从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>

SmsReceiver:

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操作系统上测试了这个,并允许短信许可。

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

修改

我可以在应用程序打开时在我的应用程序中收到短信,或者在exported = true receiver Menifest个文件的{{1}}标记中设置{{1}}后在后台接收短信。但是当应用关闭时,我在logcat中收到以下消息,无法接收短信

  

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

1 个答案:

答案 0 :(得分:0)

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

  

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