AndroidUtilCode icon indicating copy to clipboard operation
AndroidUtilCode copied to clipboard

utilcode:1.30.6或1.31.1引入后启动应用就会在”SD卡/Android/media/“路径下创建对应包名的文件夹,未授权存储权限的情况下存在调用外部SD卡的读写权限的情况

Open xiaobenssss opened this issue 2 years ago • 19 comments

utilcode:1.30.6或1.31.1引入后启动应用就会在”SD卡/Android/media/“路径下创建对应包名的文件夹,未授权存储权限的情况下存在调用外部SD卡的读写权限的情况

在启动应用未调用任何初始化代码,也会触发创建文件夹得操作。

  • AndroidUtilCode 的版本:utilcode:1.30.6和1.31.1
  • 出现 Bug 的设备型号:所有设备
  • 设备的 Android 版本:所有版本

未调用初始化代码,只是引入到项目中

implementation ('com.blankj:utilcodex:1.31.1')

异常详情

{"mkdir": "/storage/emulated/0/Android/media"}

异常堆栈

java.io.File.mkdir(File.java:1380)
java.io.File.mkdirs(File.java:1429)
java.io.File.mkdirs(File.java:1428)
android.app.ContextImpl.ensureExternalDirsExistOrFilter(ContextImpl.java:2464)
android.app.ContextImpl.getExternalMediaDirs(ContextImpl.java:694)
android.content.ContextWrapper.getExternalMediaDirs(ContextWrapper.java:287)
androidx.core.content.FileProvider.parsePathStrategy(FileProvider.java:28)
androidx.core.content.FileProvider.getPathStrategy(FileProvider.java:3)
androidx.core.content.FileProvider.attachInfo(FileProvider.java:4)
android.app.ActivityThread.installProvider(ActivityThread.java:6583)
android.app.ActivityThread.installContentProviders(ActivityThread.java:6149)
android.app.ActivityThread.handleBindApplication(ActivityThread.java:6066)
android.app.ActivityThread.-wrap1(Unknown Source:0)
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1988)
android.os.Handler.dispatchMessage(Handler.java:106)
android.os.Looper.loop(Looper.java:164)
android.app.ActivityThread.main(ActivityThread.java:6843)
java.lang.reflect.Method.invoke(Native Method)
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

截图

image

xiaobenssss avatar Dec 22 '22 10:12 xiaobenssss

这个问题是怎么处理的,我现在也遇见了

idepend avatar Dec 23 '22 04:12 idepend

这个问题是怎么处理的,我现在也遇见了

准备下载源码看看能不能去掉创建的代码,目前还没找到代码位置

xiaobenssss avatar Dec 23 '22 05:12 xiaobenssss

我也碰到了,被应用宝拒绝了

chimpan avatar Dec 23 '22 05:12 chimpan

我也碰到了,被应用宝拒绝了

是的,可能是之前检测范围没有涉及到这部分,现在测到了就都被拒了

xiaobenssss avatar Dec 23 '22 05:12 xiaobenssss

我也碰到了,被应用宝拒绝了

是的,可能是之前检测范围没有涉及到这部分,现在测到了就都被拒了

下载源码,去掉在provider初始化,改为同意隐私政策后再初始化,应该暂时可以

chimpan avatar Dec 23 '22 06:12 chimpan

我也碰到了,被应用宝拒绝了

是的,可能是之前检测范围没有涉及到这部分,现在测到了就都被拒了

下载源码,去掉在provider初始化,改为同意隐私政策后再初始化,应该暂时可以

要是定位到要修改的位置烦请告知,我还没找到。。。

xiaobenssss avatar Dec 23 '22 06:12 xiaobenssss

util_code_provider_paths.xml 文件去掉
<external-media-path name="external_media_path" path="." /> 就不会自动在media下创建包名文件夹

chimpan avatar Dec 23 '22 06:12 chimpan

util_code_provider_paths.xml 文件去掉 <external-media-path name="external_media_path" path="." /> 就不会自动在media下创建包名文件夹

看到了,感谢!!

xiaobenssss avatar Dec 23 '22 06:12 xiaobenssss

我是直接在manifest中直接改的resource文件 <provider android:name="com.blankj.utilcode.util.UtilsFileProvider" android:authorities="${applicationId}.utilcode.fileprovider" android:exported="false" android:grantUriPermissions="true">

idepend avatar Dec 23 '22 08:12 idepend

我是直接在manifest中直接改的resource文件

下载了aar包,直接注释掉了xml文件里的代码,然后重新生成了aar 引用的

xiaobenssss avatar Dec 23 '22 08:12 xiaobenssss

分享下我的临时解决办法: AndroidManifest.xml 中添加:

<provider
            android:name="com.blankj.utilcode.util.UtilsFileProvider"
            android:exported="false"
            android:authorities="com.tttell.xmx.utilcode.fileprovider"
            android:grantUriPermissions="true"
            android:enabled="false"> <!-- 这里设置为 false 禁止 ContentProvider 初始化 -->

</provider>

手动初始化:

if (用户同意隐私政策){
    Utils.init(application);
}

RDSunhy avatar Dec 26 '22 10:12 RDSunhy

楼上的方法确实好用,但手动初始化并不成功

WilburLe avatar Dec 28 '22 07:12 WilburLe

楼上的方法确实好用,但手动初始化并不成功

@WilburLe 请问怎么看出来初始化不成功? 我理解的初始化工作好像核心就一行 UtilsBridge.init() 内部也只调用了 UtilsActivityLifecycleImpl.INSTANCE.init(app) 内部的主要工作也就是给 application 设置了 activity 生命周期回调吧?

RDSunhy avatar Dec 28 '22 07:12 RDSunhy

我是直接在manifest中直接改的resource文件

下载了aar包,直接注释掉了xml文件里的代码,然后重新生成了aar 引用的

能否发个改后的aar包,我这边对项目打包,各种错误

jpchenghub avatar Jan 17 '23 02:01 jpchenghub

utilcode:1.30.6或1.31.1引入后启动应用就会在”SD卡/Android/media/“路径下创建对应包名的文件夹,未授权存储权限的情况下存在调用外部SD卡的读写权限的情况

在启动应用未调用任何初始化代码,也会触发创建文件夹得操作。

  • AndroidUtilCode 的版本:utilcode:1.30.6和1.31.1
  • 出现 Bug 的设备型号:所有设备
  • 设备的 Android 版本:所有版本

未调用初始化代码,只是引入到项目中

implementation ('com.blankj:utilcodex:1.31.1')

异常详情

{"mkdir": "/storage/emulated/0/Android/media"}

异常堆栈

java.io.File.mkdir(File.java:1380)
java.io.File.mkdirs(File.java:1429)
java.io.File.mkdirs(File.java:1428)
android.app.ContextImpl.ensureExternalDirsExistOrFilter(ContextImpl.java:2464)
android.app.ContextImpl.getExternalMediaDirs(ContextImpl.java:694)
android.content.ContextWrapper.getExternalMediaDirs(ContextWrapper.java:287)
androidx.core.content.FileProvider.parsePathStrategy(FileProvider.java:28)
androidx.core.content.FileProvider.getPathStrategy(FileProvider.java:3)
androidx.core.content.FileProvider.attachInfo(FileProvider.java:4)
android.app.ActivityThread.installProvider(ActivityThread.java:6583)
android.app.ActivityThread.installContentProviders(ActivityThread.java:6149)
android.app.ActivityThread.handleBindApplication(ActivityThread.java:6066)
android.app.ActivityThread.-wrap1(Unknown Source:0)
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1988)
android.os.Handler.dispatchMessage(Handler.java:106)
android.os.Looper.loop(Looper.java:164)
android.app.ActivityThread.main(ActivityThread.java:6843)
java.lang.reflect.Method.invoke(Native Method)
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

截图

image

兄弟你这个是什么隐私检测软件,是第三方的吗

XJAlive avatar Mar 13 '23 09:03 XJAlive

utilcode:1.30.6或1.31.1引入后启动应用就会在“SD卡/Android/media/”路径下创建对应包名的文件夹,未授权存储权限的情况下存在调用外部SD卡的读写权限的情况

在启动应用未调用任何初始化代码,也会触发创建文件夹得操作。

  • AndroidUtilCode 的版本:utilcode:1.30.6和1.31.1
  • 出现 Bug 的设备型号:所有设备
  • 设备的 Android 版本:所有版本

未调用初始化代码,只是引入到项目中

implementation ('com.blankj:utilcodex:1.31.1')

异常详情

{"mkdir": "/storage/emulated/0/Android/media"}

异常堆栈

java.io.File.mkdir(File.java:1380)
java.io.File.mkdirs(File.java:1429)
java.io.File.mkdirs(File.java:1428)
android.app.ContextImpl.ensureExternalDirsExistOrFilter(ContextImpl.java:2464)
android.app.ContextImpl.getExternalMediaDirs(ContextImpl.java:694)
android.content.ContextWrapper.getExternalMediaDirs(ContextWrapper.java:287)
androidx.core.content.FileProvider.parsePathStrategy(FileProvider.java:28)
androidx.core.content.FileProvider.getPathStrategy(FileProvider.java:3)
androidx.core.content.FileProvider.attachInfo(FileProvider.java:4)
android.app.ActivityThread.installProvider(ActivityThread.java:6583)
android.app.ActivityThread.installContentProviders(ActivityThread.java:6149)
android.app.ActivityThread.handleBindApplication(ActivityThread.java:6066)
android.app.ActivityThread.-wrap1(Unknown Source:0)
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1988)
android.os.Handler.dispatchMessage(Handler.java:106)
android.os.Looper.loop(Looper.java:164)
android.app.ActivityThread.main(ActivityThread.java:6843)
java.lang.reflect.Method.invoke(Native Method)
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

截图

图像

兄弟你这个是什么隐私检测软件,是第三方的吗

应用宝更新版本时检测出来的。

xiaobenssss avatar Mar 13 '23 09:03 xiaobenssss

utilcode:1.30.6或1.31.1引入后启动应用就会在“SD卡/Android/media/”路径下创建对应包名的文件夹,未授权存储权限的情况下存在调用外部SD卡的读写权限的情况

在启动应用未调用任何初始化代码,也会触发创建文件夹得操作。

  • AndroidUtilCode 的版本:utilcode:1.30.6和1.31.1
  • 出现 Bug 的设备型号:所有设备
  • 设备的 Android 版本:所有版本

未调用初始化代码,只是引入到项目中

implementation ('com.blankj:utilcodex:1.31.1')

异常详情

{"mkdir": "/storage/emulated/0/Android/media"}

异常堆栈

java.io.File.mkdir(File.java:1380)
java.io.File.mkdirs(File.java:1429)
java.io.File.mkdirs(File.java:1428)
android.app.ContextImpl.ensureExternalDirsExistOrFilter(ContextImpl.java:2464)
android.app.ContextImpl.getExternalMediaDirs(ContextImpl.java:694)
android.content.ContextWrapper.getExternalMediaDirs(ContextWrapper.java:287)
androidx.core.content.FileProvider.parsePathStrategy(FileProvider.java:28)
androidx.core.content.FileProvider.getPathStrategy(FileProvider.java:3)
androidx.core.content.FileProvider.attachInfo(FileProvider.java:4)
android.app.ActivityThread.installProvider(ActivityThread.java:6583)
android.app.ActivityThread.installContentProviders(ActivityThread.java:6149)
android.app.ActivityThread.handleBindApplication(ActivityThread.java:6066)
android.app.ActivityThread.-wrap1(Unknown Source:0)
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1988)
android.os.Handler.dispatchMessage(Handler.java:106)
android.os.Looper.loop(Looper.java:164)
android.app.ActivityThread.main(ActivityThread.java:6843)
java.lang.reflect.Method.invoke(Native Method)
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

截图

图像

兄弟你这个是什么隐私检测软件,是第三方的吗

应用宝更新版本时检测出来的。

我在尝试hook provider初始化时机至隐私弹窗后,可以讨论下,方便加下我微信吗,18802092131

XJAlive avatar Mar 13 '23 09:03 XJAlive

我是直接在manifest中直接改的resource文件

下载了aar包,直接注释掉了XML文件里的代码,然后重新生成了AAR 引用的

能否发个改后的aar包,我这边对项目打包,各种错误

修改aar文件重新打包对后续升级版本也需要重写打包,所以我在清单文件里重写了这部分。可以参考一下 image image

xiaobenssss avatar Mar 13 '23 10:03 xiaobenssss

utilcode:1.30.6或1.31.1引入后启动应用就会在“SD卡/Android/media/”路径下创建对应包名的文件夹,未授权存储权限的情况下存在调用外部SD卡的读写权限的情况

在启动应用未调用任何初始化代码,也会触发创建文件夹得操作。

  • AndroidUtilCode 的版本:utilcode:1.30.6和1.31.1
  • 出现 Bug 的设备型号:所有设备
  • 设备的 Android 版本:所有版本

未调用初始化代码,只是引入到项目中

implementation ('com.blankj:utilcodex:1.31.1')

异常详情

{"mkdir": "/storage/emulated/0/Android/media"}

异常堆栈

java.io.File.mkdir(File.java:1380)
java.io.File.mkdirs(File.java:1429)
java.io.File.mkdirs(File.java:1428)
android.app.ContextImpl.ensureExternalDirsExistOrFilter(ContextImpl.java:2464)
android.app.ContextImpl.getExternalMediaDirs(ContextImpl.java:694)
android.content.ContextWrapper.getExternalMediaDirs(ContextWrapper.java:287)
androidx.core.content.FileProvider.parsePathStrategy(FileProvider.java:28)
androidx.core.content.FileProvider.getPathStrategy(FileProvider.java:3)
androidx.core.content.FileProvider.attachInfo(FileProvider.java:4)
android.app.ActivityThread.installProvider(ActivityThread.java:6583)
android.app.ActivityThread.installContentProviders(ActivityThread.java:6149)
android.app.ActivityThread.handleBindApplication(ActivityThread.java:6066)
android.app.ActivityThread.-wrap1(Unknown Source:0)
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1988)
android.os.Handler.dispatchMessage(Handler.java:106)
android.os.Looper.loop(Looper.java:164)
android.app.ActivityThread.main(ActivityThread.java:6843)
java.lang.reflect.Method.invoke(Native Method)
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

截图

图像

兄弟你这个是什么隐私检测软件,是第三方的吗

应用宝更新版本时检测出来的。

我在尝试hook provider初始化时机至隐私弹窗后,可以讨论下,方便加下我微信吗,18802092131

如果你需要在媒体路径存储内容可以直接申请权限,如果暂时不需要就可以先注释掉SD卡媒体文件夹的创建。应用宝的检测也是一直在变的,之前设置了禁止初始化ContentProvider,后面发现确实无法初始化成功sdk,所以成上面回复的了。

xiaobenssss avatar Mar 13 '23 10:03 xiaobenssss