0

need one help any way we can use old API in Android Q.

I am facing this issue in https://github.com/diegocarloslima/FloatingGroupExpandableListView

All works fine till Android P

How can I enable access to non-SDK interfaces?

https://developer.android.com/distribute/best-practices/develop/restrictions-non-sdk-interfaces

2019-09-27 18:36:25.024 13800-13800/com.app.readyb W/com.app.readyb: Accessing hidden field Landroid/widget/AbsListView;->mSelectorPosition:I (greylist-max-p, reflection, denied)
2019-09-27 18:36:25.029 13800-13800/com.app.readyb W/com.app.readyb.diegocarloslima.fgelv.lib.ReflectionUtils: java.lang.NoSuchFieldException: No field mSelectorPosition in class Landroid/widget/AbsListView; (declaration of 'android.widget.AbsListView' appears in /system/framework/framework.jar!classes3.dex)
        at java.lang.Class.getDeclaredField(Native Method)
        at com.app.readyb.diegocarloslima.fgelv.lib.ReflectionUtils.getFieldValue(ReflectionUtils.java:15)
        at com.app.readyb.diegocarloslima.fgelv.lib.FloatingGroupExpandableListView.dispatchDraw(FloatingGroupExpandableListView.java:195)
        at android.view.View.draw(View.java:21439)
        at android.widget.AbsListView.draw(AbsListView.java:4388)
        at android.view.View.updateDisplayListIfDirty(View.java:20313)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at android.view.View.draw(View.java:21439)
        at android.view.View.updateDisplayListIfDirty(View.java:20313)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw(ConstraintLayout.java:1765)
        at android.view.View.draw(View.java:21439)
        at android.view.View.updateDisplayListIfDirty(View.java:20313)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at android.view.View.updateDisplayListIfDirty(View.java:20304)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw(ConstraintLayout.java:1765)
        at android.view.View.updateDisplayListIfDirty(View.java:20304)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at androidx.coordinatorlayout.widget.CoordinatorLayout.drawChild(CoordinatorLayout.java:1256)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at android.view.View.updateDisplayListIfDirty(View.java:20304)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at androidx.drawerlayout.widget.DrawerLayout.drawChild(DrawerLayout.java:1426)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at android.view.View.draw(View.java:21439)
        at android.view.View.updateDisplayListIfDirty(View.java:20313)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at android.view.View.updateDisplayListIfDirty(View.java:20304)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at android.view.View.updateDisplayListIfDirty(View.java:20304)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at android.view.View.updateDisplayListIfDirty(View.java:20304)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at android.view.View.updateDisplayListIfDirty(View.java:20304)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at android.view.View.draw(View.java:21439)
        at com.android.internal.policy.DecorView.draw(DecorView.java:806)
        at android.view.View.updateDisplayListIfDirty(View.java:20313)
        at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:575)
        at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:581)
        at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:654)
        at android.view.V
2019-09-27 18:36:25.030 13800-13800/com.app.readyb D/AndroidRuntime: Shutting down VM


    --------- beginning of crash
2019-09-27 18:36:25.046 13800-13800/com.app.readyb E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.app.readyb, PID: 13800
    java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.Integer.intValue()' on a null object reference
        at com.app.readyb.diegocarloslima.fgelv.lib.FloatingGroupExpandableListView.dispatchDraw(FloatingGroupExpandableListView.java:195)
        at android.view.View.draw(View.java:21439)
        at android.widget.AbsListView.draw(AbsListView.java:4388)
        at android.view.View.updateDisplayListIfDirty(View.java:20313)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at android.view.View.draw(View.java:21439)
        at android.view.View.updateDisplayListIfDirty(View.java:20313)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw(ConstraintLayout.java:1765)
        at android.view.View.draw(View.java:21439)
        at android.view.View.updateDisplayListIfDirty(View.java:20313)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at android.view.View.updateDisplayListIfDirty(View.java:20304)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw(ConstraintLayout.java:1765)
        at android.view.View.updateDisplayListIfDirty(View.java:20304)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at androidx.coordinatorlayout.widget.CoordinatorLayout.drawChild(CoordinatorLayout.java:1256)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at android.view.View.updateDisplayListIfDirty(View.java:20304)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at androidx.drawerlayout.widget.DrawerLayout.drawChild(DrawerLayout.java:1426)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at android.view.View.draw(View.java:21439)
        at android.view.View.updateDisplayListIfDirty(View.java:20313)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at android.view.View.updateDisplayListIfDirty(View.java:20304)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at android.view.View.updateDisplayListIfDirty(View.java:20304)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at android.view.View.updateDisplayListIfDirty(View.java:20304)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at android.view.View.updateDisplayListIfDirty(View.java:20304)
        at android.view.View.draw(View.java:21168)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4388)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4149)
        at android.view.View.draw(View.java:21439)
        at com.android.internal.policy.DecorView.draw(DecorView.java:806)
        at android.view.View.updateDisplayListIfDirty(View.java:20313)
        at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:575)
        at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:581)
        at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:654)
        at android.view.ViewRootImpl.draw(ViewRootImpl.java:3610)
        at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:3418)
2019-09-27 18:36:25.046 13800-13800/com.app.readyb E/AndroidRuntime:     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2755)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1721)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7598)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:966)
        at android.view.Choreographer.doCallbacks(Choreographer.java:790)
        at android.view.Choreographer.doFrame(Choreographer.java:725)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:951)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
Mahesh
  • 1,559
  • 6
  • 27
  • 57

3 Answers3

1

How can I enable access to non-SDK interfaces?

That is not possible.

Fix the library to not attempt to use this hidden field. Since the library has not been updated in five years, it is unlikely that the original developer will fix the problem.

Or, find a replacement library and use it.

Or, create your own replacement UI.

CommonsWare
  • 986,068
  • 189
  • 2,389
  • 2,491
0

There's nothing wrong with your code, but you are using a library not updated for Android 10 with Target sdk KitKat (API 19) so really really old. You need to replace this library with something more updated and based on a RecyclerView.

greywolf82
  • 21,813
  • 18
  • 54
  • 108
0

On Android P onwards, this library does not work. You can simply use android ExpandableListView instead. That will be one to one replaceable.

You can try with the sample project in FloatingGroupExpandableListView repository and just use ExpandableListView in place of com.diegocarloslima.fgelv.lib.FloatingGroupExpandableListView. It should work.

user846316
  • 6,037
  • 6
  • 31
  • 40