2015-11-25 2 views
2

Я пытаюсь использовать run code, когда пользователь plug or unplug его мобильный. Я думал, что смогу добиться этого, создав трансляционный транслятор и установив триггер в Manifest до android.intent.action.BOOT_COMPLETED.
Затем запустите Службу из этого BOOT_COMPLETED RECEIVER и отлаживайте debugmessage.
Я запустил еще один широковещательный приемник из Сервиса для android.intent.action.ACTION_POWER_CONNECTED и android.intent.action.ACTION_POWER_DISCONNECTED.
Everthing идет хорошо, и сообщения отладки были переданы, Служба выполнила startprocess для ACTION_POWER broadcastreceiver, но приемник не запускается. Кто-нибудь понял, как это исправить?Запуск BroadcastReceiver при загрузке

Код:
Manifest:

<application 

    ... 


    <receiver 
     android:name="de.mrglue.nfc.BootReceiver" 
     android:enabled="true" 
     android:exported="true"> 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      <action android:name="android.intent.action.QUICKBOOT_POWERON" /> 
     </intent-filter> 
    </receiver> 

    <service android:name="de.mrglue.nfc.BootService" > 
    </service> 


</application> 


<receiver android:name=".PowerConnectionReceiver"> 
    <intent-filter> 
     <action android:name="android.intent.action.ACTION_POWER_CONNECTED"/> 
     <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/> 
    </intent-filter> 
</receiver> 




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

BootReceiver:

public class BootReceiver extends BroadcastReceiver{ 

@Override 
public void onReceive(Context context, Intent intent) { 
    //Can't toast here 
    //Starting service 
    context.startService(new Intent(context, BootService.class)); 
} 

Услуги:

public class BootService extends Service{ 

    @Nullable 
    @Override 
    public IBinder onBind(Intent intent) { 
     return null; 
    } 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
     Toast.makeText(this, "Starting second Receiver!", Toast.LENGTH_LONG).show(); 
     IntentFilter filter = new IntentFilter(); 
     filter.addAction(Intent.ACTION_BATTERY_CHANGED); 
     registerReceiver(new PowerConnectionReceiver(), filter); 
     Toast.makeText(this, "done!", Toast.LENGTH_LONG).show(); 
     stopSelf(); 
     return START_NOT_STICKY; 
    } 
} 

BatteryReceiver:

public class PowerConnectionReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING || 
      status == BatteryManager.BATTERY_STATUS_FULL; 

     Toast.makeText(context, "CHARGE" + isCharging, Toast.LENGTH_LONG).show(); 

    } 
} 

ответ

0

В вашем файле манифеста отсутствует разрешение на доступ к телефону.
Включить следующее разрешение на чтение состояние телефона:

использует разрешение-андроида:. Name = "android.permission.READ_PHONE_STATE

+0

И что READ_PHONE_STATE связано с моей целью? – MrGlue

0

необходим только чистую и полную перезагрузку

Редактировать Нет 1
Я постараюсь дать мне больше разъяснений, добавив более подробную информацию:

Устройство нуждается в полной перезагрузке после установки чтобы увидеть какие-либо эффекты
новых вещательных трансляций, которые система должна выполнить без приложения. вызывая намерение android.intent.action.BOOT_COMPLETED, не будет иметь никаких эффектов для устройства, которое я думаю.

+0

Это не дает ответа на вопрос. Чтобы критиковать или запросить разъяснения у автора, оставьте комментарий ниже своего сообщения - вы всегда можете прокомментировать свои собственные сообщения, и как только у вас будет достаточно [репутации] (http://stackoverflow.com/help/whats-reputation), вы будете быть в состоянии [прокомментировать любое сообщение] (http://stackoverflow.com/help/privileges/comment). - [Из обзора] (/ review/low-quality-posts/10337842) –

+0

@NorbertvanNobelen Я не понимаю, почему это не считается ответом. Это возможное решение проблемы. Я не хочу критиковать или запрашивать разъяснения у автора, потому что я автор и не вижу никаких проблем с моим вопросом на данный момент. Но я готов учиться, поэтому я постараюсь улучшить свой ответ. Спасибо за ваш комментарий. – MrGlue

+0

Ответ, который был коротким (как он был первым), используется в качестве комментария. В основном, поскольку вы не указываете причину и т. Д., Как то, что вы сейчас сделали в своем редактировании. –

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