title: android - google map is not showing on some devices
body: <p>i've tested my app on lots of phones and it works fine and shows the map correctly , but it doesn't show on some devices . it's very strange that the devices that does not show the map , works fine in other apps that uses maps . I mean , that devices shows the map and works fine in other apps  /</p>
  
  <p>this is my code :</p>
  
  <pre><code>    public class Maps extends AppCompatActivity {
      MapFragment googleMap;
      GoogleMap Map;
      Intent locatorService = null;
      Double lat = 0.0, lon = 0.0;
      Typeface typeface;
      int isAvailable = 777;
      private LatLng location;
      Boolean forEdit = false;
  
      @Override
      protected void onCreate(@Nullable Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.maps);
  
          isAvailable = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
          typeface = Func.getTypeFace(this);
  
          final Bundle bl = getIntent().getExtras();
          if (bl != null) {
              forEdit = true;
          }
  
          if (isAvailable == 0) {
              googleMap = (MapFragment) getFragmentManager().findFragmentById(R.id.map);
              googleMap.getMapAsync(new OnMapReadyCallback() {
                  @Override
                  public void onMapReady(GoogleMap googleMap) {
                      Map = googleMap;
  
                      if (googleMap == null) {
                          Toast.makeText(getApplicationContext(),
                                  "نقشه روی گوشی شما قابل نمایش نیست", Toast.LENGTH_SHORT)
                                  .show();
                      }
  
                  }
              });
          }
          mapBuilder();
      }
  
      private void mapBuilder() {
          if (Build.VERSION.SDK_INT &gt;= Build.VERSION_CODES.M
                  &amp;&amp; checkSelfPermission(
                  android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED
                  &amp;&amp; checkSelfPermission(
                  android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
              ActivityCompat.requestPermissions(Maps.this, new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION}, 1);
          } else {
              doGPS();
          }
  
  
      }
  
      public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
          switch (requestCode) {
              case 1: {
                  // If request is cancelled, the result arrays are empty.
                  if (grantResults.length &gt; 0 &amp;&amp; grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                      mapBuilder();
                  } else {
                      MyToast.makeText(Maps.this, "دسترسی به جی پی اس غیرفعال است");
                  }
                  return;
              }
          }
      }
  
      public boolean stopService() {
          if (this.locatorService != null) {
              this.locatorService = null;
          }
          return true;
      }
  
      public boolean startService() {
          try {
              FetchCordinates fetchCordinates = new FetchCordinates();
              fetchCordinates.execute();
              return true;
          } catch (Exception error) {
              return false;
          }
      }
  
      public AlertDialog CreateAlert(String title, String message) {
          AlertDialog alert = new AlertDialog.Builder(this).create();
  
          alert.setTitle(title);
  
          alert.setMessage(message);
  
          return alert;
  
      }
  
      public class FetchCordinates extends AsyncTask&lt;String, Integer, String&gt; {
          AlertDialog.Builder a;
          AlertDialog dialog;
  
          public double lati = 0.0;
          public double longi = 0.0;
  
          public LocationManager mLocationManager;
          public VeggsterLocationListener mVeggsterLocationListener;
  
          @Override
          protected void onPreExecute() {
              mVeggsterLocationListener = new VeggsterLocationListener();
              mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
  
              mLocationManager.requestLocationUpdates(
                      LocationManager.NETWORK_PROVIDER, 0, 0,
                      mVeggsterLocationListener);
          }
  
          @Override
          protected void onCancelled() {
              System.out.println("Cancelled by user!");
              dialog.dismiss();
              mLocationManager.removeUpdates(mVeggsterLocationListener);
          }
  
          @Override
          protected void onPostExecute(String result) {
              try {
                  if (dialog != null)
                      dialog.dismiss();
              } catch (Exception e) {
                  e.printStackTrace();
              }
              lat = lati;
              lon = longi;
  
              location = new LatLng(lat, lon);
              Map.addMarker(new MarkerOptions().position(location).title("مکان فعلی"));
              CameraUpdate update = CameraUpdateFactory.newLatLng(location);
              update = CameraUpdateFactory.newLatLngZoom(location, 15);  //zooom
              Map.animateCamera(update);
          }
  
          @Override
          protected String doInBackground(String... params) {
              // TODO Auto-generated method stub
  
              while (this.lati == 0.0) {
  
              }
              return null;
          }
  
          public class VeggsterLocationListener implements LocationListener {
  
              @Override
              public void onLocationChanged(Location location) {
  
                  int lat = (int) location.getLatitude(); // * 1E6);
                  int log = (int) location.getLongitude(); // * 1E6);
                  int acc = (int) (location.getAccuracy());
  
                  String info = location.getProvider();
                  try {
  
                      // LocatorService.myLatitude=location.getLatitude();
  
                      // LocatorService.myLongitude=location.getLongitude();
  
                      lati = location.getLatitude();
                      longi = location.getLongitude();
  
                  } catch (Exception e) {
                      // progDailog.dismiss();
                      // Toast.makeText(getApplicationContext(),"Unable to get Location"
                      // , Toast.LENGTH_LONG).show();
                  }
  
              }
  
              @Override
              public void onProviderDisabled(String provider) {
                  Log.i("OnProviderDisabled", "OnProviderDisabled");
              }
  
              @Override
              public void onProviderEnabled(String provider) {
                  Log.i("onProviderEnabled", "onProviderEnabled");
              }
  
              @Override
              public void onStatusChanged(String provider, int status,
                                          Bundle extras) {
                  Log.i("onStatusChanged", "onStatusChanged");
  
              }
  
          }
  
      }
  
      private void doGPS() {
          LocationManager mlocManager = null;
          LocationListener mlocListener;
          mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
          mlocListener = new MyLocationListener();
          mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mlocListener);
          if (mlocManager.isProviderEnabled(LocationManager.GPS_PROVIDER) &amp;&amp; forEdit == false) {
              startService();
          } else {
              android.support.v7.app.AlertDialog.Builder a = new android.support.v7.app.AlertDialog.Builder(Maps.this);
              a.setMessage(("جی پی اس خاموش است. آیا میخواهید روشن کنید؟"));
              a.setPositiveButton(("بله"), new DialogInterface.OnClickListener() {
                  @Override
                  public void onClick(DialogInterface dialog, int which) {
                      dialog.cancel();
                      LocationManager service = (LocationManager) getSystemService(LOCATION_SERVICE);
                      boolean enabled = service
                              .isProviderEnabled(LocationManager.GPS_PROVIDER);
                      if (!enabled) {
                          Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
                          startActivity(intent);
                      }
                  }
              });
              a.setNegativeButton(("خیر"), new DialogInterface.OnClickListener() {
                  @Override
                  public void onClick(DialogInterface dialog, int which) {
                      dialog.cancel();
                  }
              });
  
              android.support.v7.app.AlertDialog dialog = a.show();
              TextView messageText = (TextView) dialog.findViewById(android.R.id.message);
              messageText.setGravity(Gravity.RIGHT);
              messageText.setTypeface(typeface);
          }
  
      }
  
      @Override
      protected void onStart() {
          super.onStart();
          if (Map != null &amp;&amp; isAvailable != 777)
              mapBuilder();
      }
  
      @Override
      protected void onStop() {
          super.onStop();
          stopService();
      }
  
  }
  </code></pre>
  
  <p>this is the xml layout:</p>
  
  <pre><code>    &lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:orientation="vertical"&gt;
  
      &lt;fragment
          android:id="@+id/map"
          android:name="com.google.android.gms.maps.MapFragment"
          android:layout_width="match_parent"
          android:layout_height="match_parent" /&gt;
  
  &lt;/FrameLayout&gt;
  </code></pre>
  
  <p>could you help me ? what is wrong with my code ? </p>