NullPointerException with checkSelfPermission - 我找对地方了吗?



我已经发布了我的Android应用程序,但我看到用户出现了很多以下错误。我无法每次在模拟器上自己重现该问题,因此我很难自己调试它。

当用户在后台运行一段时间后打开我的应用程序时,它似乎会发生。应用将在首次运行时崩溃。当用户再次打开应用程序时,一切都很好。我觉得这与我的许可或上下文为空有关。我没有太多阅读空点的经验,所以希望得到一些帮助!

错误:

java.lang.NullPointerException: 
at android.support.v4.content.ContextCompat.checkSelfPermission (ContextCompat.java:425)
at me.XXXXXXX.XXXXXXXX.DistanceFragment.getDeviceLocation (DistanceFragment.java:463)
at me.XXXXXXX.XXXXXXXX.DistanceFragment.onConnected (DistanceFragment.java:239)
at com.google.android.gms.common.internal.zzm.zzq (Unknown Source)
at com.google.android.gms.internal.zzaal.zzo (Unknown Source)
at com.google.android.gms.internal.zzaaj.zzvE (Unknown Source)
at com.google.android.gms.internal.zzaaj.onConnected (Unknown Source)
at com.google.android.gms.internal.zzaan.onConnected (Unknown Source)
at com.google.android.gms.internal.zzzy.onConnected (Unknown Source)
at com.google.android.gms.common.internal.zzl$1.onConnected (Unknown Source)
at com.google.android.gms.common.internal.zzf$zzj.zzwZ (Unknown Source)
at com.google.android.gms.common.internal.zzf$zza.zzc (Unknown Source)
at com.google.android.gms.common.internal.zzf$zza.zzu (Unknown Source)
at com.google.android.gms.common.internal.zzf$zze.zzxa (Unknown Source)
at com.google.android.gms.common.internal.zzf$zzd.handleMessage (Unknown Source)
at android.os.Handler.dispatchMessage (Handler.java:102)
at android.os.Looper.loop (Looper.java:154)
at android.app.ActivityThread.main (ActivityThread.java:6682)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1520)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1410)

我这么说对吗...

DistanceFragment.onConnected (DistanceFragment.java:239) is called first
---> then calls DistanceFragment.getDeviceLocation (DistanceFragment.java:463)
------> checkSelfPermission (ContextCompat.java:425)*

检查权限有 2 个参数:

上下文上下文 权限字符串:

其中一个是空的?

这些行的代码如下:

239路

@Override
public void onConnected(Bundle connectionHint) {
getDeviceLocation(); /// Line 239

463路

if (ContextCompat.checkSelfPermission(getContext(),
android.Manifest.permission.ACCESS_FINE_LOCATION)
== PackageManager.PERMISSION_GRANTED) {
mLocationPermissionGranted = true;
} else {
ActivityCompat.requestPermissions(getActivity(),
new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION},
PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION);
}

感谢您的帮助。

如果有人有关于如何确保这不为空的解决方案,将不胜感激。

我这么说是对的吗...其中一个是空的?

是的。

如果有人有关于如何确保这不为空的解决方案,将不胜感激。

修复您的片段。只有在片段附加到活动时,才能在 Play 服务中注册。在其他时间(例如分离片段时(从 Play 服务中取消注册。现在,当片段未附加到活动时,您的onConnected()回调会在某个时候被调用,因此getActivity()返回null

相关内容

  • 没有找到相关文章

最新更新