2012-09-11 37 views
6

我有一个BroadcastReceiver在我的Android应用程序,它可以处理收到的短信,这样的静态注册:我的收到的SMS处理Receiver需要从系统获得什么权限?

 <receiver 
      android:name=".receivers.SmsReceiver" 
      android:exported="true" > 
      <intent-filter android:priority="100" > 
       <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
      </intent-filter> 
     </receiver> 

林特痕这一个警告,怎么一回事,因为接收器在不需要任何权限从主叫方出口。如果我将导出的属性设置为false,则在收到SMS消息时,系统无法呼叫Receiver。

那么当注册我的Receiver来处理传入的SMS消息时,我应该从系统需要什么权限?

编辑:

我不要求为“使用许可权”的标签,让我的应用程序来接收短信。我正在为我的Receiver请求正确的“android:permission”值,因此只有系统可以发送类似的广播消息,而另一个应用程序无法欺骗类似于我的应用程序的事件。

如:

 <receiver 
      android:name=".receivers.SmsReceiver" 
      android:exported="true" 
      android:permission="com.android.permission.SOME_PERMISSION_ONLY_THE_SYSTEM_HAS"> 
      <intent-filter android:priority="100" > 
       <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
      </intent-filter> 
     </receiver> 
+0

是与[this]相关的上述问题(http://code.google.com/p/android/issues/ detail?id = 36536)? – nandeesh

+0

不幸的是,没有。我正在定义正确的标签,这样当系统收到SMS时,我会收到通知,而Lint不会将此视为错误。然而,它告诉我,我的Receiver需要一个“许可”标签,以便只有可信的来源才可以通知我的短信接收方(这应该只是系统)。但我无法找到我应该使用的权限。 –

+0

我正在做类似的事情! http://stackoverflow.com/questions/14452808/sending-and-receiving-sms-mms-in-android – toobsco42

回答

-2

使用Android:优先=“2147483647”,而不是机器人:优先=“100” 因为假设你已经使用其中将优先级高的比较你的优先级的任何应用程序,u盘,然后你广播从不通知。也请在您的主要使用权限android:name =“android.permission.RECEIVE_SMS”中检查此权限

+0

该值必须是一个整数,例如“100”。更高的数字具有更高的优先级。默认值为0.该值必须大于-1000且小于1000.如DOC ref中所示http://developer.android.com/guide/topics/manifest/intent-filter-element.html – Pranav