5

我已经在清单中指定了一个接收器,就像这样..

<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 设备并重新安装它,但这没有区别。

4

2 回答 2

5

安装您的应用程序后,用户需要手动启动您的活动,然后您的任何广播接收器才会生效,从 Android 3.1 开始

于 2012-09-05T10:12:10.453 回答
0

您可以在操作系统启动时启动接收器,并提供正确的权限。

于 2012-09-05T10:32:58.907 回答