У меня в классе BroadcastReceiver есть метод, который проверяет наличие смс-триггера и выполняет функции на основе сработавшего триггера. Это метод фильтрации содержимого смс и возврата сообщения для отправки в ответ смс.
В настоящее время у меня есть условие, которое при условии «локатора» регистрирует locationListener для сети / GPS. Но я продолжаю возвращать "msg" с пустым содержимым до правильного поиска данных о координатах.
Я пробовал цикл while, но сделал его нервным, я подозреваю бесконечный цикл.
Также попробовал startActivityResult, но не смог.
Пожалуйста, совет.
public String methodTrigger(Context context, String operation){
String returnMsg="";
if (operation.equalsIgnoreCase("Lock")){
Intent lock = new Intent(context, lockscreen.class);
lock.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(lock);
returnMsg = "Lock Operation Enabled";
}else if(operation.equalsIgnoreCase("Locate")){
String msg = "";
Log.i("monitor", "Create");
LocationManager lm = (LocationManager) context.getSystemService(context.LOCATION_SERVICE);
LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
// Called when a new location is found by the network location provider.
int lat = (int) (location.getLatitude() * 1E6);
int lng = (int) (location.getLongitude() * 1E6);
test = "Latitude: "+String.valueOf(lat)+"\nLongitude: "+String.valueOf(lng);
Log.i("monitor", "Reading coordintes");
}
public void onStatusChanged(String provider, int status, Bundle extras) {}
public void onProviderEnabled(String provider) {}
public void onProviderDisabled(String provider) {}
};
// Register the listener with the Location Manager to receive location updates
if (!lm.isProviderEnabled(LocationManager.GPS_PROVIDER)){
lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
Log.i("monitor", "Listen Network");
}else{
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
Log.i("monitor", "Listen GPS");
}
Log.i("monitor", "Finish");
returnMsg = test;
}else if(...other functions.....
}
return returnMsg;
}