#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);
}