2015-11-29 4 views
1

Я хочу вызвать метод BroadcastReceiver для выполнения кода, пока пользователь не использует приложение, но я не знаю, как это сделать.Как вызвать метод BroadcastReceiver другому методу?

Вот код:

public class MainActivity extends Activity{ 

    private BroadcastReceiver intentReceiver = new BroadcastReceiver(){ 
     // this method is what I want to call 
    } 

    public static void Toast(Context context, Intent intent){ 
     // this is where I want to call the BroadcastReceiver 
    } 
} 

Я уже получил и отправить SMS на использованную в BroadcastReceiver как то, что мое заявление должно быть дела. Единственное, что я хочу решить сейчас, - это как я могу выполнить код в MainActivity, пока мое приложение не использует пользователь? Потому что я понял, что BroadcastReceiver, который находится в другом действии, работает только тогда, когда приложение не используется. В моем приложении я использовал SharedPreferences для сохранения и обновления приложения. Например, если приложение получит «ВКЛ», появится кнопка «Вкл.», А кнопка «Отключить» будет скрыта и в противном случае. Что уже хорошо работает сейчас. Недавно я попытался вызвать метод toast() из MainActivity.java в SMSReceiver.java (который работает только с фоновым включением BroadcastReceiver), чтобы увидеть, будет ли выполняться тот метод, который я вызвал, который включает toast.maketext() в toast(). И да, это выполняется, потому что появляется сообщение тоста.

Теперь я подумал, что если бы я только поместил код с SharedPreferences, который выполняется, когда приложение использует, то будет наложено на этот метод toast(), он также будет выполнен как то, что метод toast() запускается некоторое время назад, и мой проблема будет решена. Но тогда я не знаю, как это сделать, потому что я не могу назвать метод, в котором находится код. Пожалуйста помоги.

ответ

0

Вы должны определить действие, которое радиопередача должно реагировать на:

public static final String ACTION_NAME = "com.application.ACTION";

Чтобы отправить Intent для слушателя реагировать:

Intent intent = new Intent(ACTION_NAME); 
intent.putExtra(OPTIONAL_EXTRA_KEY, "your optional extra value"); 
yourContext.sendBroadcast(intent); 

Для того, чтобы прослушать Для трансляции вам необходимо определить объект Receiver.

private final BroadcastReceiver receiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     // React to the broadcast. 
    } 
}; 

Теперь вы должны зарегистрировать BroadcastReceiver:

IntentFilter filter = new IntentFilter(ACTION_NAME); 
yourActivity.registerReceiver(receiver, filter); 

И разрегистрировать:

yourActivity.unregisterReceiver(receiver); 

Я обычно регистрации и отмены регистрации в onResume и OnPause, но ваше приложение может потребовать его в различных мест.

+1

Я уже получил и отправлю SMS. Моя единственная проблема теперь в том, как я могу поместить метод в другой метод. Я пытаюсь поставить статический на BroadcastReceiver, но некоторые из кода, подчеркнутые красным, я получил ошибку. – Jobelle

0

Другой способ, чем перспектива, - это то, что я сделал для решения моей проблемы. В статическом методе, вы не можете назвать BroadcastReceiver, потому что метод BroadcastReceiver не статический метод, и вы не можете поместить слово статического на него, как то, что мой

public static void(Context context, Intent intent){ 

} 

Static для статических и нестатического для нестатического.

Поскольку я просто хочу вызвать SharedPreferences для сохраненных данных, пока приложение не используется, я просто добавляю SharedPreferences: инициализацию SharedPreferences, редактирование и сохранение моего статического метода. И проблема была решена!

0

Если вы хотите выполнить какой-либо код, когда пользователь не использует ваше приложение, вам необходимо использовать службы.Я действительно советую вам использовать IntentService

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