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 デバイス (エミュレーターまたは本物) でテストすると、期待どおりに動作します。デバイスが SMS を受信すると、MySMSBroadcastReceiver.onReceive(...) が呼び出されます。

ただし、これを 4.0 または 4.1 デバイス (エミュレーターまたは実際のデバイス) にインストールすると、着信メッセージで何も起こりません。エラーも何もありません。また、プロジェクトのプロパティを変更して 4.0 または 4.1 デバイスを具体的にターゲットにして再インストールしましたが、違いはありません。

4

2 に答える 2

5

Android 3.1 の時点で、アプリケーションをインストールした後、BroadcastReceivers が有効になる前に、ユーザーは手動でアクティビティを起動する必要があります。

于 2012-09-05T10:12:10.453 に答える
0

適切な権限を与えることで、OS の起動時にレシーバーを起動できます。

于 2012-09-05T10:32:58.907 に答える