Giter Site home page Giter Site logo

androidacp's People

Contributors

mylhyl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

androidacp's Issues

获取定位权限

我动态获取定位权限,然后点击允许,onGranted这个方法里应该去执行什么?
我就是把一个带位置的h5页面嵌入到 APP 中,现在是获取完定位之后,嵌入的
h5页拿不到手机的定位信息

targetSdkVersion 修改为23以下

如果把targetSdkVersion 修改为23以下,无论是拒绝权限还是同意权限都会走到同意的方法中,你可以会说为什么targetSdkVersion要设置在23以下 都这么老了,这个还是要取决于一些系统设备依赖第三方库的问题 ,不能高于第三方库的targetSdkVersion

buildToolsVersion 升级为28.0.2后WRITE_EXTERNAL_STORAGE和READ_EXTERNAL_STORAGE动态升级权限失败

buildToolsVersion从27.0.3升级到28.0.2后,无法进行权限的升级,而是直接崩溃。
08-28 19:47:35.997 28198-28198/? I/AcpService: targetSdkVersion >= Build.VERSION_CODES.M
08-28 19:47:35.997 28198-28198/? I/AcpManager: checkSelfPermission = -1
08-28 19:47:35.998 28198-28198/? I/AcpService: targetSdkVersion >= Build.VERSION_CODES.M
08-28 19:47:35.998 28198-28198/? I/AcpManager: checkSelfPermission = -1

NullPointerException

java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources$Theme android.content.Context.getTheme()' on a null object reference
at android.app.AlertDialog.resolveDialogTheme(AlertDialog.java:241)
at android.app.AlertDialog$Builder.(AlertDialog.java:471)
at com.mylhyl.acp.AcpManager.showDeniedDialog(AcpManager.java:196)
at com.mylhyl.acp.AcpManager.onRequestPermissionsResult(AcpManager.java:185)
at com.mylhyl.acp.AcpActivity.onRequestPermissionsResult(AcpActivity.java:28)
at android.app.Activity.dispatchRequestPermissionsResult(Activity.java:7435)
at android.app.Activity.dispatchActivityResult(Activity.java:7287)
at android.app.ActivityThread.deliverResults(ActivityThread.java:4396)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3660)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3736)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2935)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1648)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:185)
at android.app.ActivityThread.main(ActivityThread.java:6615)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:916)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:806)

java.lang.RuntimeException: Unable to resume activity {com.pufei.gxdt/com.mylhyl.acp.AcpActivity}: java.lang.RuntimeException: Failure delivering result ResultInfo{who=@android:requestPermissions:, request=56, result=-1, data=Intent { act=android.content.pm.action.REQUEST_PERMISSIONS (has extras) }} to activity {com.pufei.gxdt/com.mylhyl.acp.AcpActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources$Theme android.content.Context.getTheme()' on a null object reference
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3686)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3736)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2935)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1648)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:185)
at android.app.ActivityThread.main(ActivityThread.java:6615)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:916)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:806)

Caused by: java.lang.RuntimeException: Failure delivering result ResultInfo{who=@android:requestPermissions:, request=56, result=-1, data=Intent { act=android.content.pm.action.REQUEST_PERMISSIONS (has extras) }} to activity {com.pufei.gxdt/com.mylhyl.acp.AcpActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources$Theme android.content.Context.getTheme()' on a null object reference
at android.app.ActivityThread.deliverResults(ActivityThread.java:4400)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3660)
... 10 more

嵌套申请问题,导致子申请无法正常回调

您好:
问题描述案例:
申请A权限,当A权限同意之后,之后在业务代码中不能再申请其他权限,申请后 将无法收到任何回调,代码示例如下:
Acp.getInstance(BaseApplication.getContext()).request(AcpOptions.Builder()
.setPermissions(permission.ACCESS_COARSE_LOCATION,)
.build(),
object : AcpListener {
override fun onGranted() {
//权限同意
//部分业务逻辑
Acp.getInstance(){
//这里的权限无法收到回调
}
}

                    override fun onDenied(permissions: List<String>) {
                         //权限拒绝
                    }
                })

此类问题,可以通过权限一起申请的方式完成,但是现在对权限管理越来越严格,在代码层面也希望封装成单独申请的模式,如Android 11中前台定位权限 要和后台定位权限分开申请,要先申请前台定位权限,才能申请后台定位权限 。,所以有了上述代码

问题原因:
查看了源码,问题原因在于,当第一次发起申请的时候,权限同意之后,调用了AcpManager的onDestroy方法,将mCallback置位null了,所以嵌套申请的时候 无法正常回调

申请权限崩溃

在onCreate()中申请Manifest.permission.WRITE_EXTERNAL_STORAGE权限时,发生错误
java.lang.NullPointerException: permission cannot be null or empty

小米权限问题

小米5 Pro 申请不了权限,返回都是以获取了权限,实际是没有获取到权限

内存泄露

  • com.mylhyl.acp.AcpActivity has leaked:
    08-20 15:00:37.612 14798-15899/com.yidiankeyan.science D/LeakCanary: * GC ROOT static com.mylhyl.acp.Acp.mInstance
    08-20 15:00:37.612 14798-15899/com.yidiankeyan.science D/LeakCanary: * references com.mylhyl.acp.Acp.mAcpManager
    08-20 15:00:37.612 14798-15899/com.yidiankeyan.science D/LeakCanary: * references com.mylhyl.acp.AcpManager.mActivity
    08-20 15:00:37.612 14798-15899/com.yidiankeyan.science D/LeakCanary: * leaks com.mylhyl.acp.AcpActivity instance
    08-20 15:00:37.612 14798-15899/com.yidiankeyan.science D/LeakCanary: * Retaining: 31 KB.
    08-20 15:00:37.612 14798-15899/com.yidiankeyan.science D/LeakCanary: * Reference Key: b73f960a-f7cf-4dca-937a-1948d976579f
    08-20 15:00:37.612 14798-15899/com.yidiankeyan.science D/LeakCanary: * Device: Xiaomi Xiaomi MI MAX hydrogen
    08-20 15:00:37.612 14798-15899/com.yidiankeyan.science D/LeakCanary: * Android Version: 6.0.1 API: 23 LeakCanary: 1.4-beta2 3799172
    08-20 15:00:37.612 14798-15899/com.yidiankeyan.science D/LeakCanary: * Durations: watch=5045ms, gc=330ms, heap dump=2102ms, analysis=11156ms
    08-20 15:00:37.612 14798-15899/com.yidiankeyan.science D/LeakCanary: * Details:
    08-20 15:00:37.612 14798-15899/com.yidiankeyan.science D/LeakCanary: * Class com.mylhyl.acp.Acp
    08-20 15:00:37.612 14798-15899/com.yidiankeyan.science D/LeakCanary: | static $staticOverhead = byte[8]@852871169 (0x32d5c801)
    08-20 15:00:37.612 14798-15899/com.yidiankeyan.science D/LeakCanary: | static mInstance = com.mylhyl.acp.Acp@855530800 (0x32fe5d30)
    08-20 15:00:37.612 14798-15899/com.yidiankeyan.science D/LeakCanary: * Instance of com.mylhyl.acp.Acp
    08-20 15:00:37.612 14798-15899/com.yidiankeyan.science D/LeakCanary: | static $staticOverhead = byte[8]@852871169 (0x32d5c801)
    08-20 15:00:37.612 14798-15899/com.yidiankeyan.science D/LeakCanary: | static mInstance = com.mylhyl.acp.Acp@855530800 (0x32fe5d30)
    08-20 15:00:37.613 14798-15899/com.yidiankeyan.science D/LeakCanary: | mAcpManager = com.mylhyl.acp.AcpManager@855949504 (0x3304c0c0)
    08-20 15:00:37.613 14798-15899/com.yidiankeyan.science D/LeakCanary: | shadow$klass = com.mylhyl.acp.Acp
    08-20 15:00:37.613 14798-15899/com.yidiankeyan.science D/LeakCanary: | shadow$monitor = 0
    08-20 15:00:37.613 14798-15899/com.yidiankeyan.science D/LeakCanary: * Instance of com.mylhyl.acp.AcpManager
    08-20 15:00:37.613 14798-15899/com.yidiankeyan.science D/LeakCanary: | static REQUEST_CODE_PERMISSION = 56
    08-20 15:00:37.613 14798-15899/com.yidiankeyan.science D/LeakCanary: | static $staticOverhead = byte[16]@853728257 (0x32e2dc01)
    08-20 15:00:37.613 14798-15899/com.yidiankeyan.science D/LeakCanary: | static REQUEST_CODE_SETTING = 57
    08-20 15:00:37.613 14798-15899/com.yidiankeyan.science D/LeakCanary: | mActivity = com.mylhyl.acp.AcpActivity@852325632 (0x32cd7500)
    08-20 15:00:37.613 14798-15899/com.yidiankeyan.science D/LeakCanary: | mCallback = com.yidiankeyan.science.MainActivity$3$1@855530816 (0x32fe5d40)
    08-20 15:00:37.613 14798-15899/com.yidiankeyan.science D/LeakCanary: | mContext = com.yidiankeyan.science.DemoApplication@854326528 (0x32ebfd00)
    08-20 15:00:37.613 14798-15899/com.yidiankeyan.science D/LeakCanary: | mDeniedPermissions = java.util.LinkedList@855949536 (0x3304c0e0)
    08-20 15:00:37.613 14798-15899/com.yidiankeyan.science D/LeakCanary: | mOptions = com.mylhyl.acp.AcpOptions@855949568 (0x3304c100)
    08-20 15:00:37.613 14798-15899/com.yidiankeyan.science D/LeakCanary: | mService = com.mylhyl.acp.AcpService@855530832 (0x32fe5d50)
    08-20 15:00:37.613 14798-15899/com.yidiankeyan.science D/LeakCanary: | shadow$klass = com.mylhyl.acp.AcpManager
    08-20 15:00:37.613 14798-15899/com.yidiankeyan.science D/LeakCanary: | shadow$monitor = 0
    08-20 15:00:37.613 14798-15899/com.yidiankeyan.science D/LeakCanary: * Instance of com.mylhyl.acp.AcpActivity

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.