HMS核心地图工具包在我的android应用程序上根本不起作用

HMS核心地图工具包在我的android应用程序上根本不起作用,android,huawei-mobile-services,Android,Huawei Mobile Services,我尝试在我的应用程序中使用华为HMS地图套件,我对地图整体来说是新手(无论是谷歌还是华为),我遵循了文档中的教程和华为提供的代码实验室,并将我的代码放在一起,但当我运行地图活动时,没有显示任何内容,我得到的只是一个空白活动,我在代码中编写了一些日志语句,其中只有一条被记录下来,它被放在oncreate方法的最上面。应用程序也不会崩溃 这是我的代码,有什么问题吗 public class MapActivity extends AppCompatActivity implements OnMap

我尝试在我的应用程序中使用华为HMS地图套件,我对地图整体来说是新手(无论是谷歌还是华为),我遵循了文档中的教程和华为提供的代码实验室,并将我的代码放在一起,但当我运行地图活动时,没有显示任何内容,我得到的只是一个空白活动,我在代码中编写了一些日志语句,其中只有一条被记录下来,它被放在oncreate方法的最上面。应用程序也不会崩溃

这是我的代码,有什么问题吗


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自动选择谷歌或华为地图并相应显示。有关详细信息,请查看示例应用程序。希望能有帮助。