2016-01-19 8 views
1

Я добавил приемник для прослушивания, когда приложение установлено. Но это не работает. Вот мой код в AndroidManifest.xmlAndroid onReceive in BroadcastReceiver не работает

<receiver android:enabled="true" 
    android:exported="true" 
    android:name="com.bsp.iqtest.reiceiver.IQTestReceiver"> 
    <intent-filter> 

    <action android:name="android.intent.action.PACKAGE_ADDED" /> 
    <action android:name="android.intent.action.PACKAGE_REPLACED" /> 
    <data android:scheme="package"/> 
    </intent-filter> 
</receiver> 

Вот мой код в MainActivity (пусковой деятельности), функция OnCreate.

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    IQTestReceiver br = new IQTestReceiver(); 
    IntentFilter intentFilter = new IntentFilter(); 
    intentFilter.addAction(Intent.ACTION_PACKAGE_ADDED); 
    intentFilter.addAction(Intent.ACTION_PACKAGE_REPLACED); 
    intentFilter.addDataScheme("package"); 
    registerReceiver(br, intentFilter); 
} 

Вот мой код в IQTestReceiver (этот класс записывается в другой файл)

public class IQTestReceiver extends BroadcastReceiver { 
    public IQTestReceiver() { 
    } 
    @Override 
    public void onReceive(Context context, Intent intent) { 
    String packageName=intent.getData().getEncodedSchemeSpecificPart(); 
    Log.e("HELLO",packageName); 
    } 
} 

я поставил точку останова в OnReceive функции, но она не работает, когда я отладки.

Спасибо за помощь.

+1

Почему вы регистрируетесь приемник в деятельности OnCreate? Получатель уже зарегистрирован в манифесте. Возможно, просмотрите его. http://www.vogella.com/tutorials/AndroidBroadcastReceiver/article.html – nurisezgin

+0

Вам нужно получить событие установки вашего приложения? И если да, зачем это нужно? –

+0

Ах, нам нужно нажать данные по умолчанию (эти данные загружаются с URL-адреса), когда приложение установлено. – beginner

ответ

1

Вы можете не получить PACKAGE_ADDED или PACKAGE_REPLACED для вашего собственных, если это то, что вы пытаетесь.

«Broadcast Action: новый пакет приложений был установлен на устройстве. Данные содержат имя пакета. Обратите внимание, что недавно установленный пакет не получает эту широковещательную рассылку».

См http://developer.android.com/reference/android/content/Intent.html

0

установить broadcasrt в манифесте как этот

<receiver 
      android:name=".IQTestReceiver" 
      android:exported="true" 
      android:enabled="true"> 

      <intent-filter> 
       <action android:name="check_values"/> 

      </intent-filter> 

     </receiver> 

и отправить в эфир, как это ..... Intent it1=new Intent(Intent.ACTION_USER_PRESENT); it1.setAction("check_values"); it1.putExtra("data_key1",message); sendBroadcast(it1);

и на получение будет так ....

@Override 
     public void onReceive(Context context, Intent intent) 
     { 
      data1=intent.getStringExtra("data_key1"); 
      System.out.println("ffffff11" + data1); 
     } 
Смежные вопросы