权限拒绝:广播 Intent act=android.provider.Telephony.SMS_RECEIVED
Posted
技术标签:
【中文标题】权限拒绝:广播 Intent act=android.provider.Telephony.SMS_RECEIVED【英文标题】:Permission Denial: broadcasting Intent act=android.provider.Telephony.SMS_RECEIVED 【发布时间】:2017-05-13 12:54:55 【问题描述】:我的应用会读取收到的短信。我已经在 Manifest 中实现了接收器,添加了权限和接收器,但是当收到 SMS 时,我在 logcat 中收到以下消息。
12-29 13:25:00.081 2030-2044/? W/BroadcastQueue:权限拒绝: 广播意图 act=android.provider.Telephony.SMS_RECEIVED 来自 com.android.phone (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>
短信接收器:
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");
我在 *** 上阅读过类似的帖子,但没有任何帮助。我已经在 Marshmallow OS 上对此进行了测试,并允许 SMS 权限。
如何在我的应用中接收短信?
编辑:
在Menifest
文件的receiver
标记中设置exported = true
后,当应用打开或处于后台时,我能够在我的应用中接收短信。但是当应用程序关闭时,我在 logcat 中收到以下消息并且无法接收短信。
12-29 14:28:27.111 2030-2044/? I/ActivityManager: 启动过程 8428:com.tatvic.vatsal.test_uninstall_tracking/u0a666 用于广播 com.tatvic.vatsal.test_uninstall_tracking/com.tatvic.lib.uit.SmsReceiver
【问题讨论】:
发布清单的其余部分。除了记录消息之外,onReceive()
还会做其他事情吗?如果是这样,也发布该代码。您在 Logcat 中看到任何异常吗?不要过滤 logcat,否则你可能会错过一些有价值或重要的东西。
试试这个它可能是工作 ***.com/a/41221852/5488468
【参考方案1】:
由于您的接收器应该在您的应用程序之外调用,您应该将其android:exported
设置为true
。
如果此组件可供其他应用程序使用,则设置为 true。来自
<activity>
、<receiver>
、<service>
或<provider>
标签中的android:exported
。
【讨论】:
设置导出为 true 现在在 logcat 中显示此消息,I/ActivityManager: Start proc 7308:com.tatvic.vatsal.test_uninstall_tracking/u0a666 for broadcast com.tatvic.vatsal.test_uninstall_tracking/com .tatvic.lib.uit.SmsReceiver @Apurva 这不是错误。它只是告诉 Activity Manager 启动了您的应用程序的进程,因为您的广播接收器已启用。 (即它收到了广播) 但是没有调用 SmsRecevier 的onReceive
方法。即使应用程序关闭,我如何在那里接收回调。以上是关于权限拒绝:广播 Intent act=android.provider.Telephony.SMS_RECEIVED的主要内容,如果未能解决你的问题,请参考以下文章