2013-03-24 4 views
-1

У меня есть два приемника реализации.Приемник не работает

Первая реализация:



    public class ApplicationStartListener extends BroadcastReceiver { 
     Context mContext; 
     @Override 
     public void onReceive(Context context, Intent intent) { 
       mContext = context; 
       Toast.makeText(mContext, "FUI", Toast.LENGTH_LONG).show(); 
       Log.v("Server application FUI", intent.getAction()); 
     } 

Эта реализация не работает.

Secong реализация:



    public class TestActiv extends Activity{ 

     public void onCreate(Bundle bundle){ 
      super.onCreate(bundle); 
      setContentView(R.layout.main); 
      final IntentFilter intentFilter = new IntentFilter(); 
      intentFilter.addAction(Intent.ACTION_PACKAGE_CHANGED); 
      intentFilter.addAction(Intent.ACTION_PACKAGE_ADDED); 
      intentFilter.addAction(Intent.ACTION_PACKAGE_REPLACED); 
      intentFilter.addAction(Intent.ACTION_SCREEN_OFF); 
      intentFilter.addAction(Intent.ACTION_SCREEN_ON); 
      intentFilter.addAction(Intent.ACTION_CAMERA_BUTTON); 



      BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { 
       @Override 
       public void onReceive(Context context, Intent intent) { 
        Log.v("Server applic", "FUI: " + intent.getAction()); 
       } 
      }; 
      registerReceiver(broadcastReceiver, intentFilter); 
     } 
    } 

Почему не работает первый BroadcastReceiver реализации?

ответ

0

Чтобы зарегистрировать приемник это не может быть внутри AndroidManifest.xml, регистр во время выполнения

Зарегистрируйте этот приемник в любой службе.

IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON); 
filter.addAction(Intent.ACTION_SCREEN_OFF); 
BroadcastReceiver mReceiver = new ScreenReceiver(); 
registerReceiver(mReceiver, filter); 
+0

Мой проект no не имеет деятельности или обслуживания. Регистровый приемник должен быть статическим. – user1854307

+0

@ user1854307 Создайте сервис и запишите этот код в службу и запустите сервис. Конечно, это поможет мне с той же проблемой раньше. Я решил это так. –

+0

Мне нужно зарегистрироваться в AndroidManifest.xml. Я сделал, но эта реализация не работает. – user1854307

0

Намерения SCREEN_ON и SCREEN_OFF Мне это не нужно. Нужно только PACKAGE_CHANGED. Он работает при запуске приложений на устройстве?


    public class TestActiv extends Activity{ 

     public void onCreate(Bundle bundle){ 
      super.onCreate(bundle); 
      setContentView(R.layout.main); 
      final IntentFilter intentFilter = new IntentFilter(); 
      intentFilter.addAction(Intent.ACTION_PACKAGE_CHANGED); 


      BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { 
       @Override 
       public void onReceive(Context context, Intent intent) { 
        Log.v("Server applic", "FUI: " + intent.getAction()); 
       } 
      }; 
      registerReceiver(broadcastReceiver, intentFilter); 
     } 
    } 
Смежные вопросы