2014-09-21 7 views
0

Я разрабатываю приложение для Android, которое использует BroadcastReceiver для выполнения некоторых действий при загрузке телефона. На моем Nexus 5 под управлением Android 4.4.4 KitKat он отлично работает, но мой друг тестировал его на телефоне под управлением Android 2.3.6, и он не работал. Мой код выглядит следующим образом:BroadcastReceiver не работает на Android 2.x

public class PowerConnectionReceiver extends BroadcastReceiver { 

private static final int NOTIFICATION_ID = 1; 

@Override 
public void onReceive(Context context, Intent intent) { 

    NotificationCompat.Builder notifBuilder = new NotificationCompat.Builder(context) 
      .setSmallIcon(R.drawable.ic_launcher) 
      .setContentTitle("My app") 
      .setContentText("My notification...") 
      .setTicker("My awesome notification"); 

    NotificationManager notifManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
    notifManager.notify(NOTIFICATION_ID, notifBuilder.build()); 
} 

}

В BroadcastReceiver, я просто показать уведомление. Затем я зарегистрировать BroadcastReceiver на AndroidManifest.xml:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

    ...More code... 

    <application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 

    ...More code... 

    <receiver 
     android:name=".activities.PowerConnectionReceiver" 
     android:enabled="true" > 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
     </intent-filter> 
    </receiver> 

    ... More code... 
    </application> 

Что я могу сделать, чтобы мое приложение работает на Android 2.x?

Заранее спасибо.

ответ

0

Попробуйте установить разрешение вне приемника, а также:

.... 
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission> 

<application 
.... 

Как и при установке место установки на internalOnly:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
... 
android:installLocation="internalOnly" 
> 

Наконец, попробуйте изменить код ресивера как таковой, если выше все еще не работает:

<receiver android:name=".activities.PowerConnectionReceiver" 
     android:enabled="true" 
     android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      <action android:name="android.intent.action.QUICKBOOT_POWERON" /> 
     </intent-filter> 
    </receiver> 
+0

Спасибо! Я собираюсь попробовать, и я посмотрю, решает ли он мою проблему. – fergaral

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