【问题标题】:HMS core map kit not working at all on my android appHMS 核心地图套件在我的 android 应用程序上根本不起作用
【发布时间】:2023-03-03 08:22:24
【问题描述】:

我正在尝试在我的应用程序中使用华为 HMS 地图套件,我是整体地图的新手(无论是来自谷歌还是华为),我遵循了文档中的教程和华为提供的代码实验室并将我的代码放在一起,但是当我运行地图活动时,什么也没有出现,我得到的只是一个空白活动,我在整个代码中编写了一些日志语句,并且只有其中一个被记录在最顶部创建方法。应用也不会崩溃。

这是我的代码,它可能有什么问题?


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。 仍然..没有任何工作

请帮帮我

谢谢

【问题讨论】:

  • 希望 this 有所帮助。
  • 谢谢,但我也按照这里的步骤操作,但仍然遇到同样的问题
  • Map Kit支持的设备是华为手机。你的安卓手机是什么?
  • @M.KH G+H 解决方案可用于集成。这样谷歌手机上可以使用谷歌地图,华为手机上可以使用华为地图。
  • @M.KH 也许这可以帮助github.com/franalma/MapsWrapper 轻松整合两个地图。使用此库中的地图 API 自动选择 Google 或华为地图并相应显示。检查示例应用程序以获取详细信息。希望对您有所帮助。

标签: android huawei-mobile-services


【解决方案1】:

1.为什么会这样?

HUAWEI Map Kit支持的设备是华为手机。如果您使用 Google 手机,请转到第 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;
}

或者请参考这个:How to check Google Mobile Services enable in device or not?

其次,进入不同的代码分支,执行不同的地图初始化任务。

if(isGMS()) {
init Google map and functions
} else if(isHMS()) {
init Huawei map and functions
}

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 2020-11-06
    • 2021-11-05
    • 1970-01-01
    • 2017-08-17
    • 1970-01-01
    • 2018-12-13
    • 2019-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多