Я использую Сервисы Google Play, чтобы узнать местоположение пользователя (пакет com.google.android.gms:play-services-location:16.0.0
).Как описано здесь , вы можете предложить пользователю включить настройки местоположения, если необходимо, через диалоговое окно, которое запускается с помощью startResolutionForResult
:
task.addOnFailureListener(this, new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
if (e instanceof ResolvableApiException) {
try {
ResolvableApiException resolvable = (ResolvableApiException) e;
resolvable.startResolutionForResult(MainActivity.this, REQUEST_CHECK_SETTINGS);
} catch (IntentSender.SendIntentException sendEx) {
// Ignore the error.
}
}
}
Однако я хотел бы запустить этодиалоговое окно в новом действии началось с нажатия на уведомление.Для этого я пытаюсь добавить ResolvableApiException resolvable
к цели для нового действия, чтобы я мог вызвать startResolutionForResult
внутри нового класса деятельности.В частности, у меня есть:
final Intent intent = new Intent(context, NewActivity.class);
final Bundle extras = new Bundle();
extras.putSerializable(EXTRA_EXCEPTION, resolvable);
intent.putExtras(extras);
Я получаю следующую ошибку:
java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = com.google.android.gms.common.api.ResolvableApiException)
Caused by: java.io.NotSerializableException: com.google.android.gms.common.api.Status
ResolvableApiException
в конечном счете наследуется от Throwable
, который реализует Serializable
, поэтому я надеялся, что яможет добавить resolvable
в качестве сериализуемого дополнения.Но кажется, что поле ResolvableApiException
Status
не сериализуемо.
Какие-либо предложения о том, как я могу заставить этот подход работать, или другой подход, который я могу использовать, чтобы вызвать диалоговое окно, нажав на уведомление?Спасибо!