Как передать значение из действия в широковещательном приемнике?

#android #android-manifest

#Android #android-манифест

Вопрос:

Как считывать данные из действия в широковещательном приемнике, если широковещательный приемник зарегистрирован через файл манифеста??? Пожалуйста, помогите…

Комментарии:

1. Пожалуйста, выполните поиск, прежде чем отправлять вопрос на любой форум

Ответ №1:

Сначала вам нужно сохранить данные в SharedPreferences, а затем получить их в широковещательный приемник.

Вы можете использовать приведенный ниже код в файле манифеста :

 <receiver android:name=".YourReceiver">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</receiver>
 

и в коде вы можете использовать :

 public class YourReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        if(intent.getAction().equals("android.intent.action.BOOT_COMPLETED"))
        {
            //updateWidget();
            SharedPreferences prfs = context.getSharedPreferences("defaul", 0);
            boolean bb=prfs.getBoolean("eer",false);
            alarm=context.getSharedPreferences("def", 0).getString("alarm_time","");
        }
    }
}
 

Комментарии:

1. Спасибо за вашу помощь, но не могли бы вы, пожалуйста, помочь мне исправить мою ошибку в этом коде. Я применил ваш совет, и, похоже, он работает, но я в замешательстве: в моей основной деятельности у меня есть код, подобный этому общедоступный класс CarMaintainerActivity расширяет Activity реализует OnClickListener { общедоступные статические общие ссылки AppData; общедоступная статическая конечная строка APP_PREFERENCES_AP = «DataAP»; } Я могу успешно сохранить свои данные в этой строке APP_PREFERENCES_AP.

2. В моем классе широковещательного приемника: public class JobService расширяет BroadcastReceive { NotificationManager nm1; Строковый сигнал тревоги; public void onReceive(контекст контекста, намерение намерения) { SharedPreferences prfs = context.getSharedPreferences(«default», 0); логическое значение bb= prfs.getBoolean(«eer», false); alarm=контекст.getSharedPreferences(«по умолчанию», 0).getString(CarMaintainerActivity. APP_PREFERENCES_AP,»»); } Но это строковое значение сигнала тревоги после выполнения кода оказывается равным нулю… Пожалуйста, скажите мне, что я делаю не так?

Ответ №2:

Если вы вызываете широковещательный приемник через код, тогда вы можете вызвать его, как показано ниже

 Intent intent1 = new Intent(context, TimeAlarm.class)
intent1.putExtra("var1", "value");
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0,
             intent1, PendingIntent.FLAG_ONE_SHOT);
 

Комментарии:

1. Нет, мой код требует, чтобы широковещательный приемник запускался автоматически при загрузке. Поэтому я не могу вызвать его с помощью кода. Есть ли какой-либо другой способ сделать это, если я хочу вызвать его через загрузочное намерение файла манифеста?

2. Затем сначала вам нужно сохранить данные в файлах настроек.. тогда вы можете использовать <receiver android:name=» . YourReceiver»> <intent-filter> <действие android:name=»android.intent.action. BOOT_COMPLETED» /> </intent-filter> </receiver>

Ответ №3:

Не получение значения из activity в класс receiver, который расширяет широковещательный приемник

 Intent inte = new Intent();
    inte.setAction("MyBroadcast");

    inte.putExtra("Phone_number1", phoo1);
    inte.putExtra("Phone_number2",phoo2);
    inte.putExtra("Phone_number3", phoo3);
    sendBroadcast(inte);
 

 Bundle extras = intent.getExtras();
        if (extras != null) {

          String phoo1 = (String) extras.get("Phone_number1");//getting null value
          String phoo2 = (String) extras.get("Phone_number2");
          String phoo3 = (String) extras.get("Phone_number3");
          System.out.println("Value Of Contact Numbers Outside intent in Reciver");
          System.out.println("Value Of First Contact Number" phoo1);
          System.out.println("Value Of Second Contact Number" phoo2);
          System.out.println("Value Of Third Contact Number" phoo3);
}