2012-03-25 68 views
3

我正在開發一個應用程序,它監聽傳入的短信。我已添加權限:權限拒絕,即使在清單中添加正確的權限後

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

到我的應用清單。是的,它不在接收器標籤內。

我想通過發送一個短信從一個模擬器到另一個來測試應用程序。我logcat中得到如下條目:

WARN/ActivityManager(66): Permission Denial: receiving Intent { act=android.provider.Telephony.SMS_RECEIVED (has extras) } to com.android.LUC requires android.permission.RECEIVE_SMS due to sender com.android.phone (uid 1001) 

怪異的是,當我在模擬器中運行測試應用程序的Android 3.2,它工作正常!

應用清單:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.android.sms" 
     android:versionCode="1" 
     android:versionName="1.0"> 

    <uses-sdk android:minSdkVersion="8" /> 
    <uses-permission android:name="android.permission.RECEIVE_SMS" /> 
    <uses-permission android:name="android.permission.READ_SMS" /> 

    <application android:icon="@drawable/icon" android:label="@string/app_name" android:permission="android.permission.RECEIVE_SMS"> 
     <activity android:name=".TestSMSReceiveActivity" 
        android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <receiver android:name=".mysmstestcall" android:enabled="true"> 
      <intent-filter> 
       <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
      </intent-filter> 
     </receiver> 

    </application> 
</manifest> 

mysmstestcall是廣播接收器類和TestSMSReceiveActivity是主要的活動。該應用程序無法在運行android 2.2的模擬器中接收消息。請幫忙!!

+0

請發佈您的清單。 – 2012-03-25 07:39:46

+0

我同意我們需要驗證您的清單。你也說過仿真器3.2是好的,但你遇到問題的版本是什麼? – louielouie 2012-03-25 08:05:31

+0

我已經在問題中添加了清單。請幫忙! – crashOveride 2012-03-25 11:43:03

回答

5

確定問題出在您的清單中。我的工作短信廣播接收器有以下清單條目:

<receiver 
    android:name=".IncomingSmsBroadcastReceiver" 
    android:enabled="true" 
    android:exported="true"> 
    <intent-filter> 
     <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
    </intent-filter> 
</receiver> 

您不需要接收器上的android:permission屬性。你只需要以下權限接收廣播,並能夠看到該消息的內容:

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

最經常被錯過的事情是android:exported="true"宣佈其爲正在接收廣播所需的接收器時源自您自己的應用程序之外。不用說,這個屬性的默認值是'false'。快樂的短信接收。