HMS核心地图工具包在我的android应用程序上根本不起作用
我尝试在我的应用程序中使用华为HMS地图套件,我对地图整体来说是新手(无论是谷歌还是华为),我遵循了文档中的教程和华为提供的代码实验室,并将我的代码放在一起,但当我运行地图活动时,没有显示任何内容,我得到的只是一个空白活动,我在代码中编写了一些日志语句,其中只有一条被记录下来,它被放在oncreate方法的最上面。应用程序也不会崩溃 这是我的代码,有什么问题吗HMS核心地图工具包在我的android应用程序上根本不起作用,android,huawei-mobile-services,Android,Huawei Mobile Services,我尝试在我的应用程序中使用华为HMS地图套件,我对地图整体来说是新手(无论是谷歌还是华为),我遵循了文档中的教程和华为提供的代码实验室,并将我的代码放在一起,但当我运行地图活动时,没有显示任何内容,我得到的只是一个空白活动,我在代码中编写了一些日志语句,其中只有一条被记录下来,它被放在oncreate方法的最上面。应用程序也不会崩溃 这是我的代码,有什么问题吗 public class MapActivity extends AppCompatActivity implements OnMap
public class MapActivity extends AppCompatActivity implements OnMapReadyCallback {
private HuaweiMap hMap;
private MapView mMapView;
private static final String MAPVIEW_BUNDLE_KEY = "MapViewBundleKey";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map);
Log.i("TAG", "onCreate");
//get mapview instance
mMapView = findViewById(R.id.mapView);
Bundle mapViewBundle = null;
if (savedInstanceState != null) {
mapViewBundle = savedInstanceState.getBundle(MAPVIEW_BUNDLE_KEY);
}
MapsInitializer.setApiKey(android.net.Uri.encode("my api key here"));
mMapView.onCreate(mapViewBundle);
//get map instance
mMapView.getMapAsync(this);
}
@Override
public void onMapReady(HuaweiMap map) {
//get map instance in a callback method
Log.d("TAG", "onMapReady: ");
hMap = map;
}
@Override
protected void onStart() {
super.onStart();
mMapView.onStart();
}
@Override
protected void onStop() {
super.onStop();
mMapView.onStop();
}
@Override
protected void onDestroy() {
super.onDestroy();
mMapView.onDestroy();
}
@Override
protected void onPause() {
mMapView.onPause();
super.onPause();
}
@Override
protected void onResume() {
super.onResume();
mMapView.onResume();
}
private static boolean hasPermissions(Context context, String... permissions) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && permissions != null) {
for (String permission : permissions) {
if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) {
return false;
}
}
}
return true;
}
}
在代码之外,我已经确定了我的华为应用程序库连接配置、api密钥和所有内容,以及gradle中所需的依赖项
我检查了我的minSDK,确定它也是19。
还是没什么用
请帮帮我
谢谢你。为什么会发生这种情况? 华为地图套件支持的设备是华为手机。如果您使用谷歌手机,请转至步骤2 2。如何操作? 如果你 寻找一种方法,使我能够在同一时间使用两个地图 通过检测设备类型并相应采取行动 您可以使用G+H溶液。使用G+H方法,您可以维护一个代码库,并根据其中一个的可用性决定是否使用GMS或HMS 首先,检查GMS和HMS是否可用
public boolean isGMS(){
return GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(this) == com.google.android.gms.common.ConnectionResult.SUCCESS;
}
public boolean isHMS(){
return HuaweiApiAvailability.getInstance().isHuaweiMobileServicesAvailable(this) == com.huawei.hms.api.ConnectionResult.SUCCESS;
}
或请参考以下内容:
其次,进入不同的代码分支并执行不同的映射初始化任务
if(isGMS()) {
init Google map and functions
} else if(isHMS()) {
init Huawei map and functions
}
希望有帮助 希望能有所帮助。谢谢,但我也遵循了其中的步骤,仍然存在相同的问题地图套件支持的设备是华为手机。您的Android手机是什么?@M.KH G+H解决方案可用于集成。这样,谷歌地图可以在谷歌手机上使用,华为地图可以在华为手机上使用。@M.KH这可能有助于轻松整合这两种地图。使用此库中的地图API自动选择谷歌或华为地图并相应显示。有关详细信息,请查看示例应用程序。希望能有帮助。