1

У меня проблема вроде этого use registerReceiver for non activity and non service class. я пытаюсь использовать Облако сообщений Google, и мне нужно зарегистрировать BroadCastReceiver из одного действия и отменить его из другого действия. Для этого я поместил BroadcastReceiver в другой пакет, кроме активности.
в деятельности я имею это:Android BroadCast Receiver и GMC

public void onPushStateButtonClicked(View view) { 
      // controllo se il bottone è su on 
      boolean on = ((ToggleButton) view).isChecked(); 
      PushClientService p = new PushClientService(); 
      if (on) { 
       // se il bottone in impostazioni è settato ad on registro il dispositivo 
       p.customReceiver(this); 
       p.pushService(this); 
      }else if(!on) { 
       // se il bottone in impostazioni è settato ad off cancello il dispositivo 

       try{  
        GCMRegistrar.unregister(this); 
        p.customUnregisterReceiver(this); 

       }catch(IllegalArgumentException iAE){ 
        Log.e("Errore:","device non registrato "+iAE); 
       } 
      } 
} 

в другом классе я это:

private final BroadcastReceiver mHandleMessageReceiver = 
      new BroadcastReceiver() { 
      @Override 
      public void onReceive(Context context, Intent intent) { 
       String newMessage = intent.getExtras().getString(EXTRA_MESSAGE); 
       Log.d("Message",newMessage); 
      } 
     }; 
     public void customReceiver(Context context){ 
      context.registerReceiver(mHandleMessageReceiver, 
        new IntentFilter(DISPLAY_MESSAGE_ACTION)); 
     } 
     public void customUnregisterReceiver(Context context){ 
      context.unregisterReceiver(mHandleMessageReceiver); 
     } 

и это проявляется:

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

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="17" /> 
    <permission android:name="com.example.testpushcall.permission.C2D_MESSAGE" android:protectionLevel="signature" /> 
    <uses-permission android:name="com.example.testpushcall.permission.C2D_MESSAGE" /> 
    <!-- App receives GCM messages. --> 
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 
    <!-- GCM connects to Google Services. --> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <!-- GCM requires a Google account. --> 
    <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
    <!-- Keeps the processor from sleeping when a message is received. --> 
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.example.testpushcall.TestPush" 
      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="com.example.testpushcall.utils.CustomGCMBroadcastReceiver" 
      android:permission="com.google.android.c2dm.permission.SEND" > 
      <intent-filter> 
      <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
      <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> 
      <category android:name="com.example.testpushcall" /> 
      </intent-filter> 
     </receiver> 
     <service android:name="com.example.testpushcall.utils.GCMIntentService" /> 
    </application> 

</manifest> 

когда я Разрегистрируйте приемник значение mHandleMessageReceiver отличается от регистрации, как я могу это сделать? Сделать mHandleMessageReceiver статическим?

Пожалуйста, дайте мне идею tnks

ответ

1

я уже решил проблему, используя только приемник объявил в манифесте. и зарегистрировать и отменить регистрацию идентификатора с сервера google

Смежные вопросы