Этот код хорошо работал на старых версиях Android.Когда я обновил его до последней версии Android Studio, он больше не работает.
Я пытаюсь отправить простую строку из одного из моих классов в основное действие.
Я объявляю получателя в моем манифесте....
<receiver android:name="com.domain.appname.MainActivity$MyReceiver">
<intent-filter>
<action android:name="MY_ACTION"/>
</intent-filter>
</receiver>
При попытке отправить трансляцию с помощью намерения.Это когда местоположение определяется как измененное
private class LocationListener implements android.location.LocationListener
{
Location mLastLocation;
public LocationListener(String provider)
{
mLastLocation = new Location(provider);
}
@Override
public void onLocationChanged(Location location)
{
addStats("onLocationChanged - "+mLastLocation.getLatitude()+" "+mLastLocation.getLongitude()+" "+mLastLocation.getAccuracy()+" "+mLastLocation.getSpeed());
mLastLocation.set(location);
//send latitude, longitude and accuracy as broadcast to main activity
Intent intent = new Intent();
intent.setAction(MY_ACTION);
intent.putExtra("DATAPASSED", mLastLocation.getLatitude()+" "+mLastLocation.getLongitude()+" "+mLastLocation.getAccuracy()+" "+mLastLocation.getSpeed());
sendBroadcast(intent);
addStats("after sendBroadcast");
}
@Override
public void onProviderDisabled(String provider){}
@Override
public void onProviderEnabled(String provider){}
@Override
public void onStatusChanged(String provider, int status, Bundle extras){}
}
Строки addStats там только для отладки, и все они запускаются.то есть, я вижу статистику по обнаружению новых long / lat и получаю сообщение «after sendBroadcast», поэтому похоже, что этот код отправляет (или пытается отправить) широковещательную рассылку.
Сейчас в моей основной деятельностиЯ получаю это как приемник ...
//receives the broadcasts from the MyLocationService service
public static class MyReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context arg0, Intent arg1) {
addStats("inside onReceive");
String datapassed = arg1.getStringExtra("DATAPASSED");
}
}
Это никогда не срабатывает.Я никогда не вижу сообщение "inside onReceive".
Есть идеи, что мне не хватает?Я прошел через много стековых потоков и результатов Google, и, кажется, выше, что мне нужно, чтобы это работало.Как я уже говорил, раньше он работал нормально (возможно, версия 26 Android), но я пытаюсь запустить это приложение на более новых версиях ОС.