';java.lang.NullPointerException';例外无法计算android.os.Bundle.toString();在另一部手机上尝试应用程序后

';java.lang.NullPointerException';例外无法计算android.os.Bundle.toString();在另一部手机上尝试应用程序后,java,android,exception,Java,Android,Exception,目标:构建并运行一个应用程序,我已经在安卓7.0(牛轧糖,API级别24)上的安卓4.2.2(JellyBean,API级别17)上测试成功 问题:当我启动调试或启动应用程序时,会出现“应用程序继续停止”消息。我不清楚到底是哪个问题(如果我觉得这个问题与权限处理有关的话)。我的发现如下 调试 Method threw 'java.lang.NullPointerException' exception. Cannot evaluate android.os.Bundle.toString()

目标:构建并运行一个应用程序,我已经在安卓7.0(牛轧糖,API级别24)上的安卓4.2.2(JellyBean,API级别17)上测试成功

问题:当我启动调试或启动应用程序时,会出现“应用程序继续停止”消息。我不清楚到底是哪个问题(如果我觉得这个问题与权限处理有关的话)。我的发现如下

调试

Method threw 'java.lang.NullPointerException' exception. Cannot evaluate android.os.Bundle.toString()
logcat

09-21 09:56:32.793 15606-15606/com.example.rage.lamapp E/art: The String#value field is not present on Android versions >= 6.0
MapsActivity(不是完整的代码以保持它的整洁)

公共类MapsActivity扩展了AppCompatActivity在MapReadyCallback上的实现{
公共静态谷歌地图;
布尔值mRequestingLocationUpdates=true;
私有静态整数间隔\u持续时间=5000;//5秒
专用静态int信号\区域\更新\间隔=1;
公共静态int-ACTIVE_技术=-1;
专用静态int无线_技术=-1;//0 wifi、1 umts、2 lte
私有最终静态int MY_PERMISSION_FINE_LOCATION=101;
私有最终静态int MY_PERMISSION_rough_LOCATION=102;
私有最终静态整数请求检查设置=1024;
私有最终静态整型更新搜索条最小值=5;
私有FusedLocationProviderClient mFusedLocationClient;
私有位置回调mLocationCallback;
私人位置请求mLocationRequest;
私人场所经理场所经理;
私有连接管理器连接管理器;
专用网络信息wifiCheck;
专用电话管理器电话管理器;
私人WifiManager WifiManager;
专用广播接收机;
私人名单结果;
私有int localMaxSignalStrength=0;
private final static HashMap RSSIcolorHmap=new HashMap();
专用数据库数据库;
私有最终位置更新位置更新=新位置更新(MapsActivity.this);
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_映射);
db=SignalAreaDatabase.getDatabase(此);
mFusedLocationClient=LocationServices.getFusedLocationProviderClient(此);
locationManager=(locationManager)getSystemService(位置服务);
connectivityManager=(connectivityManager)getSystemService(Context.CONNECTIVITY_服务);
telephonyManager=(telephonyManager)getSystemService(电话服务);
wifiManager=(wifiManager)getApplicationContext().getSystemService(Context.WIFI_服务);
工具栏myToolbar=(工具栏)findViewById(R.id.my_工具栏);
//检查位置服务是否已启用
//checkGPSisEnabled();
//设置工具栏
myToolbar.setTitle(“RSSI映射”);
myToolbar.setSubtitle(“连接图生成器”);
设置支持操作栏(myToolbar);
//如果授予位置权限,则初始化地图
if(ActivityCompat.checkSelfPermission(this,Manifest.permission.ACCESS\u FINE\u LOCATION)==PackageManager.permission\u已授予){
mapSync();
}否则{
if(Build.VERSION.SDK\u INT>=Build.VERSION\u code.M){
requestPermissions(新字符串[]{Manifest.permission.ACCESS\u FINE\u LOCATION},MY\u permission\u FINE\u LOCATION);
}
}
}
@凌驾
public void onRequestPermissionsResult(int-requestCode,@NonNull-String[]permissions,@NonNull-int[]grantResults){
super.onRequestPermissionsResult(请求代码、权限、授权结果);
开关(请求代码){
案例我的\u许可\u罚款\u地点:
if(grantResults[0]==已授予PackageManager.权限){
if(ActivityCompat.checkSelfPermission(this,Manifest.permission.ACCESS\u FINE\u LOCATION)==PackageManager.permission\u已授予){
mMap.setMyLocationEnabled(真);
}
}否则{
Toast.makeText(getApplicationContext(),“此应用程序需要授予位置权限”,Toast.LENGTH_SHORT).show();
完成();
}
打破
案例我的权限\u粗略\u位置:
if(grantResults[0]==已授予PackageManager.权限){
if(ActivityCompat.checkSelfPermission(此、Manifest.permission.ACCESS\u位置)==PackageManager.permission\u已授予){
mMap.setMyLocationEnabled(真);
}
}否则{
Toast.makeText(getApplicationContext(),“此应用程序需要授予位置权限”,Toast.LENGTH_SHORT).show();
完成();
}
打破
}
}
/*其他代码*/

请查看一下。我已经这样做了,但我没有使用firebaseYou只是分离了权限字符串初始化并更改了语句的顺序为什么它应该工作?否则如果(Build.VERSION.SDK\u INT>=Build.VERSION\u CODES.m)您的意思是这就是问题所在?
public class MapsActivity extends AppCompatActivity implements OnMapReadyCallback {

public static GoogleMap mMap;
boolean mRequestingLocationUpdates = true;

private static int INTERVAL_DURATION = 5000; //5 sec
private static int SIGNAL_AREA_UPDATE_INTERVAL = 1;
public static int ACTIVE_TECHNOLOGY = -1;
private static int WIRELESS_TECHNOLOGY = -1; // 0 wifi, 1 umts, 2 lte
private final static int MY_PERMISSION_FINE_LOCATION = 101;
private final static int MY_PERMISSION_COARSE_LOCATION = 102;
private final static int REQUEST_CHECK_SETTINGS = 1024;
private final static int UPDATE_SEEK_BAR_MIN_VALUE = 5;


private FusedLocationProviderClient mFusedLocationClient;
private LocationCallback mLocationCallback;
private LocationRequest mLocationRequest;


private LocationManager locationManager;
private ConnectivityManager connectivityManager;
private NetworkInfo wifiCheck;
private TelephonyManager telephonyManager;
private WifiManager wifiManager;
private BroadcastReceiver wifiScanReceiver;
private List<ScanResult> results;

private int localMaxSignalStrength = 0;

private final static HashMap<Integer, String> RSSIcolorHmap = new HashMap();

private  SignalAreaDatabase db;

private final LocationUpdate locationUpdate= new LocationUpdate(MapsActivity.this);





@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_maps);

    db = SignalAreaDatabase.getDatabase(this);


    mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
    locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
    connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    telephonyManager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
    wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
    Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);

    // Check if location service is enabled
   // checkGPSisEnabled();

    // Set the toolbar
    myToolbar.setTitle("RSSI Map");
    myToolbar.setSubtitle("A Connectivity Map Builder");
    setSupportActionBar(myToolbar);

    // If location permission is granted initialize Map
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {

        mapSync();

    } else {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

            requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, MY_PERMISSION_FINE_LOCATION);
        }
    }

}


 @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch (requestCode) {
            case MY_PERMISSION_FINE_LOCATION:
                if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
                        mMap.setMyLocationEnabled(true);


                    }
                } else {
                    Toast.makeText(getApplicationContext(), "This app requires location permission to be granted", Toast.LENGTH_SHORT).show();
                    finish();
                }
                break;
            case MY_PERMISSION_COARSE_LOCATION:
                if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
                        mMap.setMyLocationEnabled(true);
                    }
                } else {
                    Toast.makeText(getApplicationContext(), "This app requires location permission to be granted", Toast.LENGTH_SHORT).show();
                    finish();
                }

                break;


        }
    }

/* other code */
String[] permissionsRequired = new String[]{Manifest.permission.ACCESS_FINE_LOCATION};

if(ActivityCompat.checkSelfPermission(this, permissionsRequired[0]) != PackageManager.PERMISSION_GRANTED){
            ActivityCompat.requestPermissions(this,permissionsRequired,PERMISSION_CALLBACK_CONSTANT);
        }
else if((ActivityCompat.checkSelfPermission(this, permissionsRequired[0]) == PackageManager.PERMISSION_GRANTED){ mapSync();
}