使用产品:iMobile 11i 操作系统:win10 x64
手机Android版本:10
问题详细描述:根据帮助文档写完代码,并将许可文件和地图数据放置在手机相应位置后,可以成功运行并且不报错,但是会闪退。
super.onCreate(savedInstanceState);
requestPermissions();
setContentView(R.layout.activity_main);
MapControl mapControl = null;
String rootPath = android.os.Environment.getExternalStorageDirectory().getAbsolutePath();
//设置许可文件路径(默认路径“/SuperMap/license/”)
Environment.setLicensePath(rootPath + "/SuperMap/license/");
//组件功能必须在Environment初始化之后才能调用
Environment.initialization(this);
setContentView(R.layout.activity_main);
//打开工作空间
Workspace m_workspace = new Workspace();
WorkspaceConnectionInfo info = new WorkspaceConnectionInfo();
info.setServer(rootPath + "/SuperMap/GeometryInfo/World.smwu");
info.setType(WorkspaceType.SMWU);
m_workspace.open(info);
//将地图显示控件和工作空间关联
MapView m_mapView = findViewById(R.id.Map_view);
mapControl = m_mapView.getMapControl();
mapControl.getMap().setWorkspace(m_workspace);
//打开工作空间中的第二幅地图
String mapName = m_workspace.getMaps().get(1);
mapControl.getMap().open(mapName);
mapControl.getMap().refresh();
根据网上搜索来的解决办法,添加了获取权限的弹窗,运行时不闪退了但是会一直白屏且无法退出,关闭手机再重新打开后白屏消失,但是始终无法真正启动应用。
private void requestPermissions() { //Android6.0以上设备设置动态权限
// 检查是否拥有权限
String[] permissions = {
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.ACCESS_WIFI_STATE,
Manifest.permission.ACCESS_NETWORK_STATE,
Manifest.permission.CHANGE_WIFI_STATE,
};
String permission = null;
int id = 0;
boolean isBreak = false;
int checkCallPhonePermission = 0;
for (int i = 0; i < permissions.length; i++) {
permission = permissions[i];
checkCallPhonePermission = checkSelfPermission(permission);
if (checkCallPhonePermission != PackageManager.PERMISSION_GRANTED) {
requestPermissions(permissions, id);
isBreak = true;
break;
}
}
}