首页 / 浏览问题 / 移动GIS / 问题详情
Environment初始化报错
12EXP 2017年06月05日

在vivo手机上测试时,Environment.initialization(this);报错说是没有获取到。可是我已经把数据、许可等相关文件导入至手机里了。我在小米pad上就可以运行,在vivo上代码数据都一样就是会报错,错误代码如下:


FATAL EXCEPTION: main
                                                 Process: com.lcu.sharingcycle.iqi, PID: 8065
                                                 java.lang.RuntimeException: Unable to create application com.lcu.sharingcycle.iqi.iqimain.MyApplication: java.lang.NullPointerException: Attempt to get length of null array
                                                     at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4689)
                                                     at android.app.ActivityThread.access$1600(ActivityThread.java:175)
                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1430)
                                                     at android.os.Handler.dispatchMessage(Handler.java:102)
                                                     at android.os.Looper.loop(Looper.java:135)
                                                     at android.app.ActivityThread.main(ActivityThread.java:5418)
                                                     at java.lang.reflect.Method.invoke(Native Method)
                                                     at java.lang.reflect.Method.invoke(Method.java:372)
                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1037)
                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:832)
                                                  Caused by: java.lang.NullPointerException: Attempt to get length of null array
                                                     at com.supermap.data.Environment.checkAndLoadLibrary(Environment.java:1202)
                                                     at com.supermap.data.Environment.initialization(Environment.java:500)
                                                     at com.lcu.sharingcycle.iqi.iqimain.MyApplication.onCreate(MyApplication.java:72)
                                                     at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1021)
                                                     at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4686)
                                                     at android.app.ActivityThread.access$1600(ActivityThread.java:175) 
                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1430) 
                                                     at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                     at android.os.Looper.loop(Looper.java:135) 
                                                     at android.app.ActivityThread.main(ActivityThread.java:5418) 
                                                     at java.lang.reflect.Method.invoke(Native Method) 
                                                     at java.lang.reflect.Method.invoke(Method.java:372) 
                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1037) 
                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:832) 

2 个回答

你好,你的vivo手机系统版本是多少,用的SuperMap iMobile for Android是哪个版本?
2,042EXP 2017年06月06日
你好。手机是vivox7系统版本是android 5.1.1 使用SuperMap iMobile 8C(2017) SP1 for Android_811_9429
在运行到iMobile for Android的接口前动态设置这个版本的文件的读取权限,可能是在这个设备中没有对应的权限。
你好,能请问是什么权限?在 manifest中权限都添加了,手机的权限也都允许了

在7.0的有些系统中在MainFest中设置的缺陷没有起作用,需要在代码层设置文件的权限,具体方法如下,你也可以百度一下动态申请权限的方法

package com.imobiletest.bufferanalystbygemotry;

import android.Manifest;
import android.annotation.TargetApi;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Build;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class PermissionActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_permission);
        requestPermisson();
    }

    @TargetApi(23)
    private void requestPermisson() {
        // 版本判断
        if (Build.VERSION.SDK_INT >= 23) {
            // 检查是否拥有权限
            String[] permissions = {Manifest.permission.WRITE_EXTERNAL_STORAGE,
                    Manifest.permission.ACCESS_FINE_LOCATION};
            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;
                }
            }
            if(!isBreak)
                startMain();
        }
    }

    @TargetApi(23)
    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        // TODO Auto-generated method stub
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        startMain();

    }

    private void startMain(){
        Intent intent = new Intent();
        intent.setClass(getApplicationContext(), MainActivity.class);
        startActivity(intent);
        finish();
    }
}

你好,这个方法我试过了还是会出现一样的错误,而且还换了另一个手机nubia系统是Android5.02surprise

还有请问imobile的environment需要什么样的权限呢?

FATAL EXCEPTION: main
Process: com.lcu.sharingcycle.iqi, PID: 3547
java.lang.RuntimeException: Unable to create application com.lcu.sharingcycle.iqi.iqimain.MyApplication: java.lang.NullPointerException: Attempt to get length of null array

at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4624)
at android.app.ActivityThread.access$1500(ActivityThread.java:154)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1384)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5336)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
Caused by: java.lang.NullPointerException: Attempt to get length of null array
at com.supermap.data.Environment.checkAndLoadLibrary(Environment.java:1202)
at com.supermap.data.Environment.initialization(Environment.java:500)
at com.lcu.sharingcycle.iqi.iqimain.MyApplication.onCreate(MyApplication.java:72)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1011)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4621)
at android.app.ActivityThread.access$1500(ActivityThread.java:154) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1384) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:135) 
at android.app.ActivityThread.main(ActivityThread.java:5336) 
at java.lang.reflect.Method.invoke(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:372) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699) 

你好,我也遇到了这个问题,你怎样解决的呢?
我使用的是SuperMap iMobile 9D for Android SDK, 使用SampleCode里的demo可以运行,但是我新建一个新的工程后,把可以运行的demo代码拷贝到自己项目里后运行在同一个手机上时就报和题主同样的错误了。因为是运行在同一个手机上,所以应该不是权限的问题吧
同问啊,遇到同样的问题,有人解决了吗,官网可以跑通,自己建的程序就不行了,什么情况,加载场景不能实现
当时挂电话咨询售后,说是尽量使用原生android系统,现在手机的系统都是厂商优化过的,具体的还是挂电话咨询才弄的清楚。
问题是在同一台手机上,demo可以运行,自己新建的工程就报错!权限都和可以运行的demo里一样了。。。题主最后是怎样解决的呢?
我就只是进入开发者选项,然后把系统优化关闭了。
现在这个错误还是存在,官方能给点解决办法么
到底怎么获取动态权限啊,有没有人会啊,超图能出个教程吗
请问您解决了这个问题了吗

可能是NDK问题,参考这篇文章https://blog.csdn.net/smartzzg/article/details/104629991

5EXP 2020年03月03日
...