2

Android Cloud to Device Messaging を使用するアプリを作成しました。適切なアイコンから起動してこのアプリを使用しているため、正常に動作します。私が見つけた問題は、デバイス自体の起動後です。起動後、レシーバーは正しく起動し、使用したいサービスを正しく起動し、実行中かどうかを確認していくつかのタスクを実行し、最終的に別のサービスを起動します。

それを達成するために、私はこれをしました:

マニフェストで:

         <receiver android:name=".C2DMReceiver" android:permission="com.google.android.c2dm.permission.SEND">             
          <!-- Receive the actual message -->
          <intent-filter>
              <action android:name="com.google.android.c2dm.intent.RECEIVE" />
              <category android:name="com.myapp.app" />
          </intent-filter>
          <!-- Receive the registration id -->
          <intent-filter>
              <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
              <category android:name="com.myapp.app" />
          </intent-filter>
                 <intent-filter>
                <action   android:name="android.intent.action.BOOT_COMPLETED"/>
                <category android:name="com.myapp.app" />
            </intent-filter> 
     </receiver>

私の受信機では:

        if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) {

        Intent NewIntent = new Intent(context, MyService.class);
        context.startService(NewIntent);
        Log.i("C2DMReceiver", "MyService started");
    }

次に、受信者は MyService が実行されているかどうかを確認する必要があります。そのために、MyService 内に次のように記述します。

    // Use activity in C2DMReceiver class
public static Service getCurrentService() {
    return curService;
}

したがって、レシーバーをチェックインするには、次のようにします。

if (MyService.getCurrentService != null){
        //DO ELSE
    }

問題は、サービスが実際に実行されている場合でも、このブール条件が常に false になることです。

なんで?

4

0 に答える 0