我的应用程序读取传入的短信。我已经在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
答案 0 :(得分:0)
由于您的接收器应该在您的应用程序之外调用,因此您应该将其currentMenu
设置为android:exported
。
如果此组件可供其他应用程序使用,则设置为true。来自
true
,android:exported
,<activity>
或<receiver>
标记的<service>
。