Closed yanglichuan closed 7 years ago
@yanglichuan Where did you call TedPermission?
Having same problem. This is where I'm calling it:
@Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
new TedPermission(getActivity())
.setPermissionListener(permissionlistener)
.setDeniedMessage("If you reject permission, you can not use this service\n\nPlease turn on permissions at [Setting] > [Permission]")
.setPermissions(Manifest.permission.READ_CONTACTS, Manifest.permission.READ_CALL_LOG, Manifest.permission.READ_SMS)
.check();
}
}
same problem here
called from fragment onCreate
new TedPermission(getActivity()) .setPermissionListener(permissionListener) .setDeniedMessage(getString(R.string.fragment_move_gps_denied_error_message)) .setPermissions(Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION) .check();
We get this logcat after trying to bring back activity from background
java.lang.RuntimeException: Failure delivering result ResultInfo{who=@android:requestPermissions:, request=10, result=-1, data=Intent { act=android.content.pm.action.REQUEST_PERMISSIONS (has extras) }} to activity {io.bitfactory.pumpmove.debug/com.gun0912.tedpermission.TedPermissionActivity}: java.lang.RuntimeException: Could not dispatch event: class com.gun0912.tedpermission.busevent.TedPermissionEvent to handler [EventHandler public void com.gun0912.tedpermission.TedInstance.onPermissionResult(com.gun0912.tedpermission.busevent.TedPermissionEvent)]: Attempt to invoke virtual method 'int android.content.Context.checkPermission(java.lang.String, int, int)' on a null object reference at android.app.ActivityThread.deliverResults(ActivityThread.java:4053) at android.app.ActivityThread.handleSendResult(ActivityThread.java:4096) at android.app.ActivityThread.-wrap20(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1516) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6077) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) Caused by: java.lang.RuntimeException: Could not dispatch event: class com.gun0912.tedpermission.busevent.TedPermissionEvent to handler [EventHandler public void com.gun0912.tedpermission.TedInstance.onPermissionResult(com.gun0912.tedpermission.busevent.TedPermissionEvent)]: Attempt to invoke virtual method 'int android.content.Context.checkPermission(java.lang.String, int, int)' on a null object reference at com.squareup.otto.Bus.throwRuntimeException(Bus.java:460) at com.squareup.otto.Bus.dispatch(Bus.java:387) at com.squareup.otto.Bus.dispatchQueuedEvents(Bus.java:368) at com.squareup.otto.Bus.post(Bus.java:337) at com.gun0912.tedpermission.busevent.TedBusProvider.post(TedBusProvider.java:49) at com.gun0912.tedpermission.TedPermissionActivity.permissionGranted(TedPermissionActivity.java:115) at com.gun0912.tedpermission.TedPermissionActivity.onRequestPermissionsResult(TedPermissionActivity.java:208) at android.app.Activity.dispatchRequestPermissionsResult(Activity.java:7069) at android.app.Activity.dispatchActivityResult(Activity.java:6921) at android.app.ActivityThread.deliverResults(ActivityThread.java:4049) at android.app.ActivityThread.handleSendResult(ActivityThread.java:4096) at android.app.ActivityThread.-wrap20(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1516) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6077) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.content.Context.checkPermission(java.lang.String, int, int)' on a null object reference at android.support.v4.content.ContextCompat.checkSelfPermission(ContextCompat.java:425)
same issue.
@yanglichuan @zenkhas @Bkrickl @hjbaek Can you upload your project file?(by zip file) I had test but I can not find error. If you upload error sample project, I will find and fix it
저도 비슷한 경우인 것 같은데 NPE가 발생해서 코멘트 남깁니다.
발생상황: fragment의 엑션바 menu아이템 클릭시 TedPermission 호출 후 권한승인되면 엑티비티 실행하는 로직에서 발생. 디버그 모드일때는 정상작동하나 릴리즈 모드로 실행시 발생
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_map: / 권한체크 / new TedPermission(getContext()) .setPermissionListener(new PermissionListener() { @Override public void onPermissionGranted() { startActivity(new Intent(getContext(), MapActivity.class)); }
@Override
public void onPermissionDenied(ArrayList<String> deniedPermissions) {
}
})
.setDeniedMessage("권한이 승인되지 않아 서비스를 실행할 수 없습니다.\n권한설정은 [설정] > [권한]에서 변경하실 수 있습니다.")
.setGotoSettingButtonText("설정")
.setPermissions(Manifest.permission.ACCESS_FINE_LOCATION)
.check();
break;
}
return super.onOptionsItemSelected(item);
}
05-08 23:36:09.871 17611-17611/? E/AndroidRuntime: FATAL EXCEPTION: main Process: myapp, PID: 17611 java.lang.NullPointerException at com.gun0912.tedpermission.b.a.c(Unknown Source) at com.gun0912.tedpermission.b.a.b(Unknown Source) at com.gun0912.tedpermission.d.a(Unknown Source) at com.serendipper16.roadyu.fragment.SearchBuildingFragment.a(Unknown Source) at android.support.v4.b.m.c(Unknown Source) at android.support.v4.b.s.a(Unknown Source) at android.support.v4.b.p.a(Unknown Source) at android.support.v4.b.n.onMenuItemSelected(Unknown Source) at android.support.v7.app.c.onMenuItemSelected(Unknown Source) at android.support.v7.view.i.onMenuItemSelected(Unknown Source) at android.support.v7.view.i.onMenuItemSelected(Unknown Source) at android.support.v7.app.o$2.a(Unknown Source) at android.support.v7.widget.Toolbar$1.a(Unknown Source) at android.support.v7.widget.ActionMenuView$d.a(Unknown Source) at android.support.v7.view.menu.h.a(Unknown Source) at android.support.v7.view.menu.j.b(Unknown Source) at android.support.v7.view.menu.h.a(Unknown Source) at android.support.v7.view.menu.h.a(Unknown Source) at android.support.v7.widget.ActionMenuView.a(Unknown Source) at android.support.v7.view.menu.ActionMenuItemView.onClick(Unknown Source) at android.view.View.performClick(View.java:4469) at android.view.View$PerformClick.run(View.java:18584) at android.os.Handler.handleCallback(Handler.java:733) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5094) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:608) at dalvik.system.NativeStart.main(Native Method)
@serendipper16 getContext()
가 아닌 getActivity()
나 Activity이름.this로 context를 지정해도 같은오류가 발생하시나요?
좀전에 다시 테스트 해봤는데 getActivity()를 해도 여전히 죽으며 fragment에서 호출중인데 MainActivity.this는 어떻게 호출해야 하는지 모르겠습니다. getContext()로 작업시 debug에서는 문제가 없었으나 빌드 후 release로 배포시에 죽는 현상을 발견하였습니다.
2017-05-10 11:43 GMT+09:00 Ted Park notifications@github.com:
@serendipper16 https://github.com/serendipper16 getContext()가 아닌 getActivity() 나 Activity이름.this로 context를 지정해도 같은오류가 발생하시나요?
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/ParkSangGwon/TedPermission/issues/20#issuecomment-300358208, or mute the thread https://github.com/notifications/unsubscribe-auth/ALL-YCdsAcwrYxttoeZcutd1D9Z-SHsRks5r4SRkgaJpZM4JnQTV .
@serendipper16 혹시 Proguard를 사용중이신가요?
아 네 release모드에 proguard 설정이 되어있었어서 발생했던 것 같아요.
@serendipper16 Readme의 proguard 설정을 보시고 그대로 적용해보시면 otto관련 이슈는 없을것 같습니다.
1 main
java.lang.NullPointerException Attempt to invoke interface method 'void com.gun0912.tedpermission.PermissionListener.onPermissionGranted()' on a null object reference 解析原始 } 1 java.lang.RuntimeException:Unable to start activity ComponentInfo{com.ks.kaishustory/com.gun0912.tedpermission.TedPermissionActivity}: java.lang.RuntimeException: Could not dispatch event: class com.gun0912.tedpermission.busevent.TedPermissionEvent to handler [EventHandler public void com.gun0912.tedpermission.TedInstance.onPermissionResult(com.gun0912.tedpermission.busevent.TedPermissionEvent)]: Attempt to invoke interface method 'void com.gun0912.tedpermission.PermissionListener.onPermissionGranted()' on a null object reference 2 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2423) 3 ...... 4 Caused by: 5 java.lang.NullPointerException:Attempt to invoke interface method 'void com.gun0912.tedpermission.PermissionListener.onPermissionGranted()' on a null object reference 6 com.gun0912.tedpermission.TedInstance.onPermissionResult(TedInstance.java:65) 7 java.lang.reflect.Method.invoke(Native Method) 8 com.squareup.otto.EventHandler.handleEvent(EventHandler.java:89) 9 com.squareup.otto.Bus.dispatch(Bus.java:385) 10 com.squareup.otto.Bus.dispatchQueuedEvents(Bus.java:368) 11 com.squareup.otto.Bus.post(Bus.java:337) 12 com.gun0912.tedpermission.busevent.TedBusProvider.post(TedBusProvider.java:49) 13 com.gun0912.tedpermission.TedPermissionActivity.permissionGranted(TedPermissionActivity.java:115) 14 com.gun0912.tedpermission.TedPermissionActivity.checkPermissions(TedPermissionActivity.java:159) 15 com.gun0912.tedpermission.TedPermissionActivity.onCreate(TedPermissionActivity.java:58) 16 android.app.Activity.performCreate(Activity.java:6303) 17 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108) 18 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2376) 19 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2483) 20 android.app.ActivityThread.access$900(ActivityThread.java:153) 21 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1349) 22 android.os.Handler.dispatchMessage(Handler.java:102) 23 android.os.Looper.loop(Looper.java:148) 24 android.app.ActivityThread.main(ActivityThread.java:5442) 25 java.lang.reflect.Method.invoke(Native Method) 26 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:738) 27 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628)