Fix crash whne no google play services available

This commit is contained in:
Yegor Vialov 2020-05-28 19:17:32 +00:00
parent 1080076e3b
commit 7ffba397ce

View File

@ -16,6 +16,8 @@ import io.flutter.plugin.common.MethodChannel;
import com.google.android.gms.tasks.OnCompleteListener; import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task; import com.google.android.gms.tasks.Task;
import com.google.android.gms.common.GoogleApiAvailability;
import com.google.android.gms.common.ConnectionResult;
import com.google.firebase.iid.FirebaseInstanceId; import com.google.firebase.iid.FirebaseInstanceId;
import com.google.firebase.iid.InstanceIdResult; import com.google.firebase.iid.InstanceIdResult;
import com.google.firebase.messaging.FirebaseMessaging; import com.google.firebase.messaging.FirebaseMessaging;
@ -31,13 +33,14 @@ public class MainActivity extends FlutterActivity {
new MethodChannel.MethodCallHandler() { new MethodChannel.MethodCallHandler() {
@Override @Override
public void onMethodCall(MethodCall call, MethodChannel.Result result) { public void onMethodCall(MethodCall call, MethodChannel.Result result) {
Context context = getActivity();
if (call.method.equals("getFCMToken")) { if (call.method.equals("getFCMToken")) {
if (checkPlayServices()) {
FirebaseInstanceId.getInstance().getInstanceId() FirebaseInstanceId.getInstance().getInstanceId()
.addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() { .addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
@Override @Override
public void onComplete(@NonNull Task<InstanceIdResult> task) { public void onComplete(@NonNull Task<InstanceIdResult> task) {
if (task.isSuccessful()) { if (task.isSuccessful()) {
Context context = getActivity();
String token = task.getResult().getToken(); String token = task.getResult().getToken();
UpdateTokenTask updateTokenTask = new UpdateTokenTask(context); UpdateTokenTask updateTokenTask = new UpdateTokenTask(context);
updateTokenTask.execute(token); updateTokenTask.execute(token);
@ -47,12 +50,19 @@ public class MainActivity extends FlutterActivity {
} }
} }
}); });
} else {
result.error("google_play_service_error", "Google Play Services unavailable", null);
}
} }
} }
} }
); );
} }
private boolean checkPlayServices() {
return (GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(this) == ConnectionResult.SUCCESS);
}
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);