私は、共有プリファレンスでIPアドレスである文字列を保存する編集テキストプリファレンスを持つ設定アクティビティを持っています。次に、AsyncTaskがコールするブロードキャストレシーバを持っていますサービス。私はカスタマイズ可能なURLのアドレスを作りたいと思いますが、私はIPアドレスの現在の値を取っていない呼び出しを行うが、私は私のアプリを再起動するときに適切な値を取る。どうすればこの問題を解決できますか?私は便利なコードだけを貼り付けます。事前に おかげブロードキャストレシーバは共有プリファレンスで現在の値を読み込みません
public class Broadcast extends BroadcastReceiver {
@Override
public void onReceive(final Context context, Intent intent) {
preferences = PreferenceManager.getDefaultSharedPreferences(context);
new Call().execute();
}
private class Call extends AsyncTask<String, String, String> {
String ip;
@Override
protected String doInBackground(String... params) {
ip = preferences.getString("key","");
String result = RestFullConnection.postCall("http://" + ip + ":8080/app/api/bla/sync", params[0]);
return result;
}
}
+++ +++編集 私はMainActivityで放送呼び出すと、私はEditTextPreferenceを使用してSPに値を保存します。
Intent alarmIntent = new Intent(getApplicationContext(), Broadcast.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, Calendar.getInstance().getTimeInMillis() + 5000, 30 * 1000, pendingIntent);
どこでブロードキャストがトリガーされますか?そしてipを保存したコードを投稿してください。 –
私は自分の質問を編集します。 – mike5v