Я делаю приложение Android для отправки SMS в Telegram. Существует радиовещание, которое прослушивает SMS, а затем вызывает запрос HTTP-запроса на мой собственный сервер. Он работает нормально. Однако, когда экран выключен, Wi-Fi выключен. Когда есть SMS, нет сети для отправки HTTP-запроса.
Я искал о Вакелоке и Вифлоке. В этом случае оба они не применимы.
Есть способ пробудить сетевое соединение какое-то время, чтобы завершить HTTP-вызов?
Благодарю.
<приемник андроид: name = ".SmsReceiver" android: enabled = "true" android: exported = "true" > <фильтр-фильтр android: priority = "500" > <action android: name = "android.provider.Telephony. SMS_RECEIVED " /> </ intent-filter> </ receiver> .xml
public class SmsReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, Intent intent) {
WifiLockManager.acquireWifiLock(context);
RequestQueue queue = Volley.newRequestQueue(context);
String url = "https://smsforwarder.mydomain.xyz/";
Bundle bundle = intent.getExtras();
if (bundle != null) {
String sender = "";
String message = "";
SmsMessage[] sms = Telephony.Sms.Intents.getMessagesFromIntent(intent);
for (int i=0; i < sms.length; i++) {
SmsMessage smsMessage = sms[i];
sender = smsMessage.getOriginatingAddress();
message += smsMessage.getMessageBody();
}
Map<String, String> postParam = new HashMap<String, String>();
postParam.put("sender", sender);
postParam.put("message", message);
JsonObjectRequest jsonObjReq = new JsonObjectRequest(
Request.Method.POST,
url,
new JSONObject(postParam),
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Toast.makeText(context, "SMS forwarded", Toast.LENGTH_SHORT).show();
WifiLockManager.releaseWifiLock();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(context, "SMS forward failed", Toast.LENGTH_SHORT).show();
WifiLockManager.releaseWifiLock();
}
}
){
@Override
public Map<String, String> getHeaders() {
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("Content-Type", "application/json; charset=utf-8");
return headers;
}
};
queue.add(jsonObjReq);
}
}
SmsReceiver.java
AndroidManifest
}
android,