2016-01-10 4 views
0

Это то, что я использую сейчас:Set InnerClass BroadcastReceiver для андроида действия

в OnCreate метод:

registerReceiver(bootup, new IntentFilter("android.intent.action.BOOT_COMPLETED")); 

время загрузки приемника:

BroadcastReceiver bootup = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     Log.d("test", "received"); 
    } 
}; 

Они оба в Класс MainActivity моего приложения. Я хочу, чтобы получатель загрузки вызывался при завершении загрузки телефона. Мне нужно это в классе MainActivity, потому что мне нужно получить доступ к нему из нескольких вещей.

Как бы это установить? Мое текущее решение не работает.

EDIT: опубликовано решение похоже, что оно будет работать для моей цели, и это то, что было предложено другими потоками. Однако, когда я устанавливаю оператор журнала в получателе, с которым он связан, в консоли ничего не появляется. Это потому, что приложение не работает? Я также попробовал отправить уведомление с диспетчером уведомлений

EDIT 2: Я принял совет и переключился на трансляцию в другом классе для обнаружения перезагрузки. Он работает, просто изменяя атрибут name в файле манифеста. Это причина, почему я не могу использовать приемник внутреннего класса, на самом деле не имеет никакого смысла по сравнению с тем, что я видел по другим вопросам. Может кто-нибудь объяснить, почему я не могу указать получателя на внутренний класс, и почему я должен использовать отдельный класс?

+0

Это не возможно. Во время загрузки ваша деятельность не определяется, вы не можете получить к ней доступ. – F43nd1r

ответ

0

Создать приемник:

public class BootupReceiver extends BroadcastReceiver { 
    private final String ACTION_BOOT = "android.intent.action.BOOT_COMPLETED"; 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     if (ACTION_BOOT.equals(intent.getAction())) 
      Toast.makeText(context, R.string.bootup_receiver, Toast.LENGTH_SHORT).show(); 
    } 
} 

И приемник и использует-разрешение в AndroidManifest.xml:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
<receiver android:name="com.example.restarttest.BootupReceiver" > 
    <intent-filter> 
     <action android:name="android.intent.action.BOOT_COMPLETED" /> 
    </intent-filter> 
</receiver> 
+0

У меня есть этот приемник в классе MainActivity и установите все, как вы предложили. Я помещал оператор журнала на консоль, чтобы уведомить меня, когда телефон перезагрузится, но он не появляется. имя получателя в файле манифеста eli.me.jitteralarm.MainActivity $ BootupReceiver, что может быть проблемой, но я так не думаю. – NuffsaidM8

+0

Попробуйте загрузить BootupReceiver в один файл. –

+0

Я бы хотел, но ему нужно получить доступ к некоторым методам из основного класса активности. – NuffsaidM8

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