2012-09-05 70 views
4

我指定在像這樣的清單接收器..的Android <receiver> - 廣播接收器不叫

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
      package="com.me.MyProject" 
      android:versionCode="1" 
      android:versionName="1.0"> 

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

<application android:label="@string/app_name" 
      android:icon="@drawable/ic_launcher" android:enabled="true"> 

    <service android:name="MyService" 
      android:exported="true" 
      android:process=":different" 
      android:enabled="true"> 
     <intent-filter> 
      <action android:name="com.me.MyService"> 
      </action> 
     </intent-filter> 
    </service> 

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

如果我考這一個Android Froyo的設備(模擬器或實際)對這個工程,我期望。當設備收到短信時,MySMSBroadcastReceiver.onReceive(...)將被調用。

但是,如果我在4.0或4.1設備(仿真器或真實設備)上安裝此設備,傳入消息中不會發生任何事情。沒有錯誤,沒有任何東西。我還改變了項目的屬性,專門針對4.0或4.1設備,並重新安裝它,但這沒有什麼區別。

回答

5

安裝應用程序後,用戶需要在您的任何BroadcastReceivers有效之前手動啓動您的活動,從Android 3.1開始可以使用

+0

感謝您的回答。有沒有辦法解決這個問題?我的應用程序沒有活動,清單中列出的服務沒有運行。 – Lieuwe

+1

@Lieuwe我不確定,但我認爲沒有辦法做到這一點。它的所有關於android的安全性,沒有人可以打破這一點。 – pyus13

0

您可以在操作系統啓動時啓動接收器,並給予正確的權限。

+0

除非用戶啓動了至少一次的活動(目前不存在),否則這將不起作用。 – Lieuwe