Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] 1.28.x 汇总 #1223

Closed
Blankj opened this issue Apr 12, 2020 · 51 comments
Closed

[BUG] 1.28.x 汇总 #1223

Blankj opened this issue Apr 12, 2020 · 51 comments
Assignees
Labels

Comments

@Blankj
Copy link
Owner

Blankj commented Apr 12, 2020

版本变更

1.27.x 重构版本经过多次的 BUG 修复已趋于稳定,欢迎大家使用 1.28.x。

BUG 描述模板

拷贝如下模板到下方来提交 BUG

## 描述 Bug

简洁地描述下 Bug。
- AndroidUtilCode 的版本:例如 utilcode:1.28.0 或 utilcodex:1.28.0
- 出现 Bug 的设备型号: 例如 Nexus 5X
- 设备的 Android 版本:例如 API 27

## 相关代码

```
put your code here
```

## 异常堆栈

```
put the stack of crash here
```

## 截图

如果有的话请添加屏幕截图以帮助解释问题。
@OXeu
Copy link

OXeu commented Apr 13, 2020

描述 Bug

uri2file在Android 10(API 29)设备上获取的值为null,其他Android版本的设备正常

  • AndroidUtilCode 的版本:utilcodex:1.26.0
  • 出现 Bug 的设备型号: 荣耀20
  • 设备的 Android 版本:API 29(Android 10)

相关代码

@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {//选择文件返回
		super.onActivityResult(requestCode, resultCode, data);
		if (resultCode == RESULT_OK) {
			if (requestCode == REQUEST_CHOOSE_FILE) {
				Uri uri = data.getData();
				if (uri != null) {
					File file = UriUtils.uri2File(uri);//Android 10获取的值为null
					}else{
                                        ......
                                        }

异常堆栈

java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=123, result=-1, data=Intent { dat=content://com.folderv.file.fileprovider/external_files/360/360browser_20200404_1.html flg=0x1 }} to activity {com.zmide.lit/com.zmide.lit.ui.BookmarkImport}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.io.File.getAbsolutePath()' on a null object reference
	at android.app.ActivityThread.deliverResults(ActivityThread.java:4927)
	at android.app.ActivityThread.handleSendResult(ActivityThread.java:4968)
	at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51)
	at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
	at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2043)
	at android.os.Handler.dispatchMessage(Handler.java:107)
	at android.os.Looper.loop(Looper.java:224)
	at android.app.ActivityThread.main(ActivityThread.java:7547)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.io.File.getAbsolutePath()' on a null object reference
	at ꦬ.ຕ.ຕ.ຕ(Jsoup.java:2)
	at com.zmide.lit.a.യ.<init>(BookmarkParser.java:7)
	at com.zmide.lit.ui.BookmarkImport.onActivityResult(BookmarkImport.java:3)
	at android.app.Activity.dispatchActivityResult(Activity.java:8249)
	at android.app.ActivityThread.deliverResults(ActivityThread.java:4920)
	... 11 more
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.io.File.getAbsolutePath()' on a null object reference
	at ꦬ.ຕ.ຕ.ຕ(Jsoup.java:2)
	at com.zmide.lit.a.യ.<init>(BookmarkParser.java:7)
	at com.zmide.lit.ui.BookmarkImport.onActivityResult(BookmarkImport.java:3)
	at android.app.Activity.dispatchActivityResult(Activity.java:8249)
	at android.app.ActivityThread.deliverResults(ActivityThread.java:4920)
	at android.app.ActivityThread.handleSendResult(ActivityThread.java:4968)
	at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51)
	at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
	at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2043)
	at android.os.Handler.dispatchMessage(Handler.java:107)
	at android.os.Looper.loop(Looper.java:224)
	at android.app.ActivityThread.main(ActivityThread.java:7547)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)

@Blankj
Copy link
Owner Author

Blankj commented Apr 14, 2020

@ThankRain 你这边自己试试 10 怎么可以获取到,解决了可以提供给我相关代码。

@OXeu
Copy link

OXeu commented Apr 14, 2020

我没有10的机型,调试不了😢

@ThankRain 你这边自己试试 10 怎么可以获取到,解决了可以提供给我相关代码。

@nxnyk
Copy link

nxnyk commented Apr 15, 2020

描述 Bug

ImageUtils.isImage()始终为false,已确认为图片文件的也是

  • AndroidUtilCode 的版本:tilcodex:1.28.0
  • 出现 Bug 的设备型号: 红米8A
  • 设备的 Android 版本:28

相关代码

经检查是您加了判断bitmap的原因,bitmap始终为空
image

异常堆栈

Failed to create image decoder with message 'unimplemented'

@Blankj
Copy link
Owner Author

Blankj commented Apr 15, 2020

@nxnyk 所以应该怎么?获取不到文件那不就是 false 么。。

@nxnyk
Copy link

nxnyk commented Apr 15, 2020

@nxnyk 所以应该怎么?获取不到文件那不就是 false 么。。

但这个文件确实是存在的,并且能够打开预览,您这边bitmap为空,可能其他原因导致,不能说这个文件就不是个图片吧,是不是不太合理。。。

@KeqingLI
Copy link

DeviceUtils.getUniqueDeviceId 1.25.9版本的时候是优先MAC地址,1.28直接读取的androidId,请问是基于什么考虑呢

@Blankj
Copy link
Owner Author

Blankj commented Apr 15, 2020

@KeqingLI 9.0 以后 MAC 地址不是固定的了

@Blankj
Copy link
Owner Author

Blankj commented Apr 15, 2020

@nxnyk Android 10 访问非自己应用的目录是没有权限的,这个会导致为空吧?

@nxnyk
Copy link

nxnyk commented Apr 15, 2020

@nxnyk Android 10 访问非自己应用的目录是没有权限的,这个会导致为空吧?

没有,安卓9是 也加了android:requestLegacyExternalStorage="true" 而且1.26.0版本没问题的。。

@Blankj
Copy link
Owner Author

Blankj commented Apr 15, 2020

没有,安卓9是 也加了android:requestLegacyExternalStorage="true" 而且1.26.0版本没问题的。。

26 是因为没有判断 bitmap != null,所以是有问题的,你有好的方案吗,有的话可以说一下

@nxnyk
Copy link

nxnyk commented Apr 16, 2020

没有,安卓9是 也加了android:requestLegacyExternalStorage="true" 而且1.26.0版本没问题的。。

26 是因为没有判断 bitmap != null,所以是有问题的,你有好的方案吗,有的话可以说一下

options.inJustDecodeBounds = true;这个表示不加载到内存。。。当然为null了。。。

@nxnyk
Copy link

nxnyk commented Apr 16, 2020

没有,安卓9是 也加了android:requestLegacyExternalStorage="true" 而且1.26.0版本没问题的。。

26 是因为没有判断 bitmap != null,所以是有问题的,你有好的方案吗,有的话可以说一下

建议给两种判断方式 一个判断bitmap一个不判断,一直加载到内存中会OOM的

@KeqingLI
Copy link

@KeqingLI 9.0 以后 MAC 地址不是固定的了

可以考虑重载一个方法,优先mac地址么

@Blankj
Copy link
Owner Author

Blankj commented Apr 17, 2020

@KeqingLI 那你可以自己获取 mac 地址来搞哈

@Blankj
Copy link
Owner Author

Blankj commented Apr 17, 2020

options.inJustDecodeBounds = true;这个表示不加载到内存。。。当然为null了。。。

@nxnyk 你试试看就知道是不是 null 了

@nxnyk
Copy link

nxnyk commented Apr 20, 2020

options.inJustDecodeBounds = true;这个表示不加载到内存。。。当然为null了。。。

@nxnyk 你试试看就知道是不是 null 了

反正我试了所有的图片 都是 返回false,1.28版本

@Blankj
Copy link
Owner Author

Blankj commented Apr 20, 2020

@nxnyk 你找个可行的方案来代替我的就好了,然后发我代码即可。

@nxnyk
Copy link

nxnyk commented Apr 20, 2020

@nxnyk 你找个可行的方案来代替我的就好了,然后发我代码即可。

image
就用26版本那个即可不判断bitmap 或者inJustDecodeBounds设置为false,但是可能会oom,所以作者可以重载一个方法,要不要判断bitmap类似 isImage(String filePath,boolean getBitmap)默认不会返回bitmap 节省空间 个人愚见~

@Blankj
Copy link
Owner Author

Blankj commented Apr 20, 2020

@nxnyk 我这边之前是通过 robolectric 单测来测试的,发现和我在真机上测试有出入,你这边升级 1.28.1 版本了吗,没的话我可以重新发布个 1.28.1 版本给你。

@nxnyk
Copy link

nxnyk commented Apr 20, 2020

没事。。不急 我先用26版本的已经上线了 等你按计划更新吧。麻烦您了

@prczhb
Copy link

prczhb commented Apr 21, 2020

我没有10的机型,调试不了😢

@ThankRain 你这边自己试试 10 怎么可以获取到,解决了可以提供给我相关代码。

java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=123, result=-1, data=Intent { dat=content://com.folderv.file.fileprovider/external_files/360/360browser_20200404_1.html flg=0x1 }} to activity {com.zmide.lit/com.zmide.lit.ui.BookmarkImport}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.io.File.getAbsolutePath()' on a null object reference

你这个是打开的不是原生的文件浏览器(搜了搜应该是FV文件管理(com.folderv.file))
所以返回的uri 一般来说是很难解析的,需要定向适配. 这里我感觉如果不是主流的文件管理器就没必要适配了 你还是自己判断一下比较好
content://com.folderv.file.fileprovider/external_files/360/360browser_20200404_1.html

@OXeu
Copy link

OXeu commented Apr 21, 2020

我没有10的机型,调试不了😢

@ThankRain 你这边自己试试 10 怎么可以获取到,解决了可以提供给我相关代码。

java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=123, result=-1, data=Intent { dat=content://com.folderv.file.fileprovider/external_files/360/360browser_20200404_1.html flg=0x1 }} to activity {com.zmide.lit/com.zmide.lit.ui.BookmarkImport}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.io.File.getAbsolutePath()' on a null object reference

你这个是打开的不是原生的文件浏览器(搜了搜应该是FV文件管理(com.folderv.file))
所以返回的uri 一般来说是很难解析的,需要定向适配. 这里我感觉如果不是主流的文件管理器就没必要适配了 你还是自己判断一下比较好
content://com.folderv.file.fileprovider/external_files/360/360browser_20200404_1.html

这个我自己用Q的机器试了下,自带的文件管理也是一样的,我没有申请存储权限,不过现在已经通过Android官方文档https://developer.android.google.cn/guide/topics/providers/document-provider 提供的示例代码解决了(我只是想读取文本内容)
具体代码

private String readTextFromUri(Uri uri) throws IOException {
    StringBuilder stringBuilder = new StringBuilder();
    try (InputStream inputStream =
            getContentResolver().openInputStream(uri);
            BufferedReader reader = new BufferedReader(
            new InputStreamReader(Objects.requireNonNull(inputStream)))) {
        String line;
        while ((line = reader.readLine()) != null) {
            stringBuilder.append(line);
        }
    }
    return stringBuilder.toString();
}

@lishuxiong
Copy link

描述 Bug

FragmentUtils.popTo 中popto函数不能出栈到指定fragment 使用hack FragmentManagerImpl 也不能正确pop的
简洁地描述下 Bug。

  • AndroidUtilCode 的版本: utilcodex:1.28.0
  • 出现 Bug 的设备型号:小米10
  • 设备的 Android 版本:例如 API 28

相关代码

        FragmentUtils.popTo(mFragmentManager, fragment.getClass(), false);
        FragmentUtils.popTo(mFragmentManager, fragment.getClass(), false);

异常堆栈

put the stack of crash here

截图

如果有的话请添加屏幕截图以帮助解释问题。

@Sigasiiiiii
Copy link

Sigasiiiiii commented Apr 22, 2020

描述 Bug

闪退.

  • AndroidUtilCode 的版本: utilcode:1.28.1 (本项目demo)
  • 出现 Bug 的设备型号: 华为P40 Pro
  • 设备的 Android 版本:API 27

相关代码

 CommonItemTitle("getSerial", PhoneUtils.getSerial())

异常堆栈

************* Log Head ****************
Time Of Crash      : 2020_04_22-14_35_45
Device Manufacturer: HUAWEI
Device Model       : ELS-AN00
Android Version    : 10
Android SDK        : 29
App VersionName    : 1.28.1
App VersionCode    : 1026001
************* Log Head ****************

android.os.RemoteException: Remote stack trace:
	at com.android.internal.telephony.TelephonyPermissions.reportAccessDeniedToReadIdentifiers(libmapleframework.so:5039784)
	at com.android.internal.telephony.TelephonyPermissions.checkReadDeviceIdentifiers(libmapleframework.so:2275588)
	at com.android.internal.telephony.TelephonyPermissions.checkCallingOrSelfReadDeviceIdentifiers(libmapleframework.so:2275752)
	at com.android.server.os.DeviceIdentifiersPolicyService$DeviceIdentifiersPolicy.getSerialForPackage(libmapleservices.so:3570376)
	at android.os.IDeviceIdentifiersPolicyService$Stub.onTransact(libmapleframework.so:2669140)

	at com.android.internal.telephony.TelephonyPermissions.reportAccessDeniedToReadIdentifiers(libmapleframework.so:5039784)
	at com.android.internal.telephony.TelephonyPermissions.checkReadDeviceIdentifiers(libmapleframework.so:2275588)
	at com.android.internal.telephony.TelephonyPermissions.checkCallingOrSelfReadDeviceIdentifiers(libmapleframework.so:2275752)
	at com.android.server.os.DeviceIdentifiersPolicyService$DeviceIdentifiersPolicy.getSerialForPackage(libmapleservices.so:3570376)
	at android.os.IDeviceIdentifiersPolicyService$Stub.onTransact(libmapleframework.so:2669140)
 Caused by: java.lang.SecurityException: getSerial: The user 10243 does not meet the requirements to access device identifiers.
	at android.os.Parcel.createException(Parcel.java:2071)
	at android.os.Parcel.readException(Parcel.java:2039)
	at android.os.Parcel.readException(Parcel.java:1987)
	at android.os.IDeviceIdentifiersPolicyService$Stub$Proxy.getSerialForPackage(IDeviceIdentifiersPolicyService.java:194)
	at android.os.Build.getSerial(Build.java:190)
	at com.blankj.utilcode.util.PhoneUtils.getSerial(PhoneUtils.java:73)
	at com.blankj.utilcode.pkg.feature.phone.PhoneActivity.bindItems(PhoneActivity.kt:47)
	at com.blankj.common.activity.CommonActivity.initData(CommonActivity.java:109)
	at com.blankj.base.BaseActivity.onCreate(BaseActivity.java:36)
	at android.app.Activity.performCreate(Activity.java:8085)
	at android.app.Activity.performCreate(Activity.java:8073)
	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1320)
	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3836)
 Caused by: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.blankj.androidutilcode.debug/com.blankj.utilcode.pkg.feature.phone.PhoneActivity}: java.lang.SecurityException: getSerial: The user 10243 does not meet the requirements to access device identifiers.
	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3863)
	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4042)
	at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91)
	at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149)
	at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103)
	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2450)
	at android.os.Handler.dispatchMessage(Handler.java:110)
	at android.os.Looper.loop(Looper.java:219)
	at android.app.ActivityThread.main(ActivityThread.java:8285)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055)

截图

权限全部授权了
image

@Blankj
Copy link
Owner Author

Blankj commented Apr 22, 2020

@lishuxiong 那我就不知道了,我只是调用了系统的 API,有问题那我也解决不了的,只能你自己来定位了。

@Blankj
Copy link
Owner Author

Blankj commented Apr 23, 2020

@prczhb 你注册的时候又没有发生状态改变,为啥要通知你改变?

@prczhb
Copy link

prczhb commented Apr 23, 2020

@prczhb 你注册的时候又没有发生状态改变,为啥要通知你改变?

忘了这事了...
😰😰😰😰😰😰

@android-1995
Copy link

描述 Bug

uri2file在Android 10(API 29)设备上获取的值为null,其他Android版本的设备正常

  • AndroidUtilCode 的版本:utilcodex:1.26.0
  • 出现 Bug 的设备型号: 荣耀20
  • 设备的 Android 版本:API 29(Android 10)

相关代码

@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {//选择文件返回
		super.onActivityResult(requestCode, resultCode, data);
		if (resultCode == RESULT_OK) {
			if (requestCode == REQUEST_CHOOSE_FILE) {
				Uri uri = data.getData();
				if (uri != null) {
					File file = UriUtils.uri2File(uri);//Android 10获取的值为null
					}else{
                                        ......
                                        }

异常堆栈

java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=123, result=-1, data=Intent { dat=content://com.folderv.file.fileprovider/external_files/360/360browser_20200404_1.html flg=0x1 }} to activity {com.zmide.lit/com.zmide.lit.ui.BookmarkImport}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.io.File.getAbsolutePath()' on a null object reference
	at android.app.ActivityThread.deliverResults(ActivityThread.java:4927)
	at android.app.ActivityThread.handleSendResult(ActivityThread.java:4968)
	at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51)
	at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
	at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2043)
	at android.os.Handler.dispatchMessage(Handler.java:107)
	at android.os.Looper.loop(Looper.java:224)
	at android.app.ActivityThread.main(ActivityThread.java:7547)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.io.File.getAbsolutePath()' on a null object reference
	at ꦬ.ຕ.ຕ.ຕ(Jsoup.java:2)
	at com.zmide.lit.a.യ.<init>(BookmarkParser.java:7)
	at com.zmide.lit.ui.BookmarkImport.onActivityResult(BookmarkImport.java:3)
	at android.app.Activity.dispatchActivityResult(Activity.java:8249)
	at android.app.ActivityThread.deliverResults(ActivityThread.java:4920)
	... 11 more
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.io.File.getAbsolutePath()' on a null object reference
	at ꦬ.ຕ.ຕ.ຕ(Jsoup.java:2)
	at com.zmide.lit.a.യ.<init>(BookmarkParser.java:7)
	at com.zmide.lit.ui.BookmarkImport.onActivityResult(BookmarkImport.java:3)
	at android.app.Activity.dispatchActivityResult(Activity.java:8249)
	at android.app.ActivityThread.deliverResults(ActivityThread.java:4920)
	at android.app.ActivityThread.handleSendResult(ActivityThread.java:4968)
	at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51)
	at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
	at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2043)
	at android.os.Handler.dispatchMessage(Handler.java:107)
	at android.os.Looper.loop(Looper.java:224)
	at android.app.ActivityThread.main(ActivityThread.java:7547)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)

我测试的模拟器Android10是没问题的,目前就在华为Android10上的文件管理器发现这个问题。
下面是我的解决代码

 if ("com.google.android.apps.photos.content".equals(uri.getAuthority())) {
            if (!TextUtils.isEmpty(uri.getLastPathSegment())) {
                return new File(uri.getLastPathSegment());
            }
        } else if ("com.tencent.mtt.fileprovider".equals(uri.getAuthority())) {
            String path = uri.getPath();
            if (!TextUtils.isEmpty(path)) {
                File fileDir = Environment.getExternalStorageDirectory();
                return new File(fileDir, path.substring("/QQBrowser".length(), path.length()));
            }
        } else if ("com.huawei.hidisk.fileprovider".equals(uri.getAuthority())) {
            //华为Android10的文件管理器
            String path = uri.getPath();
            if (!TextUtils.isEmpty(path)) {
                return new File(path.replace("/root", ""));
            }
        }

@LoveqLRC
Copy link

LoveqLRC commented Apr 24, 2020

描述 Bug

  • AndroidUtilCode 的版本: utilcodex:1.28.0
  • 出现 Bug 的设备型号: 华为P30 PRO
  • 设备的 Android 版本: Andoird 10

相关代码

UriUtils.uri2File(uri)

异常堆栈

 java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=123, result=-1, data=Intent { dat=content://com.android.providers.downloads.documents/document/678 flg=0x1 }} to activity {xx.activity}: java.lang.IllegalArgumentException: Unknown URI: content://downloads/public_downloads/678
        at android.app.ActivityThread.deliverResults(ActivityThread.java:5471)
        at android.app.ActivityThread.handleSendResult(ActivityThread.java:5512)
        at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2386)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:213)
        at android.app.ActivityThread.main(ActivityThread.java:8178)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1101)
  Caused by: java.lang.IllegalArgumentException: Unknown URI: content://downloads/public_downloads/678
        at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:170)
        at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:140)
        at android.content.ContentProviderProxy.query(ContentProviderNative.java:423)
        at android.content.ContentResolver.query(ContentResolver.java:955)
        at android.content.ContentResolver.query(ContentResolver.java:891)
        at android.content.ContentResolver.query(ContentResolver.java:840)
        at utils.UriUtils.getFileFromUri(UriUtils.java:216)
        at utils.UriUtils.getFileFromUri(UriUtils.java:197)
        at utils.UriUtils.uri2File(UriUtils.java:150)

通过系统文件选择器,选择外部下载(DownLoad)文件夹下的文件进行uri2File转换,会报上面的错

@Blankj
Copy link
Owner Author

Blankj commented Apr 25, 2020

@ThankRain @nxnyk @android-1995 @LoveqLRC 试试 1.28.2

@Blankj
Copy link
Owner Author

Blankj commented Apr 25, 2020

@Sigasiiiiii 最新代码已修复

@LoveqLRC
Copy link

LoveqLRC commented Apr 26, 2020

@Blankj 谢谢及时反馈,我看到现在1.28.2的逻辑是,没有找到文件,就把文件复制到cache中,但是这样有两个问题,第一是原来的文件名字丢失了,另外一个就是文件格式丢失了。

@DaveBoy
Copy link

DaveBoy commented Apr 26, 2020

我也不知道具体原因,很诡异,前几天看工具类升级了,我就更新了1.28.1.结果出现切换语言后app一直闪退。而且是从firbase内部暴露出来的,但是我把工具类降回去就没问题了。为了确认是工具类导致的,我复测了好几次,确定了是工具类的问题。
1.28.1导致了我的 admob/firebase出问题了。。。。切换语言之后导致的。。。#issues/1388 我反复试过多次,之后发现恢复1.26.0无问题。但我无法确认到底是不是LanguageUtil的问题还是说是其他工具类的问题。无法反向查找追溯

@DaveBoy
Copy link

DaveBoy commented Apr 26, 2020

android q和android 7都稳定出现了这个问题。其他没测

@Blankj
Copy link
Owner Author

Blankj commented Apr 27, 2020

@LoveqLRC 那些你可以从原 uri 获取,你 uri 转 File 难道只是为了转 File?不是为了之后读取内容吗?

@LoveqLRC
Copy link

@Blankj uri转file是为了把file上传到服务器,那么就需要知道文件路径、文件名

@Blankj
Copy link
Owner Author

Blankj commented Apr 27, 2020

@Blankj uri转file是为了把file上传到服务器,那么就需要知道文件路径、文件名

@LoveqLRC 那你原来的 uri 是有这些信息的呀,你说你只是为了上传到服务器,那根本没有必要调用 uri2File 呀,直接 uri2InputStream 传上去就行呀。

@ijays7
Copy link

ijays7 commented Apr 27, 2020

描述

调用 BarUtils#isNavBarVisible 方法后出现崩溃。

  • 之前使用1.26.0 的时候无此问题,升级到 1.28.3 后出现。
  • 目前测试了三台设备都出现此问题,分别是荣耀V10(Android10)、小米Note3(Android9)以及Pixel(Android10)

相关代码

BarUtils.isNavBarVisible(activity)

异常堆栈

E/CrashReport: android.content.res.Resources$NotFoundException: Unable to find resource ID #0x7f090176
        at android.content.res.ResourcesImpl.getResourceEntryName(ResourcesImpl.java:380)
        at android.content.res.Resources.getResourceEntryName(Resources.java:2229)
        at com.blankj.utilcode.util.BarUtils.isNavBarVisible(BarUtils.java:560)
        at com.blankj.utilcode.util.BarUtils.isNavBarVisible(BarUtils.java:543)

感谢大佬

@LoveqLRC
Copy link

@Blankj 然而uri2Path也存在不少适配问题

@Blankj
Copy link
Owner Author

Blankj commented Apr 27, 2020

@Blankj 然而uri2Path也存在不少适配问题

@LoveqLRC 本来就不存在通解,有的话你可以提 PR 给我即可。

@Blankj
Copy link
Owner Author

Blankj commented Apr 27, 2020

@ijays7 好的,下版本修复,你可以先拷贝一份出来,把 Resources.getSystem() 改成 Utils.getApp().getResources() 来临时解决。

@Blankj
Copy link
Owner Author

Blankj commented May 4, 2020

@ijays7 已修复 1.28.4

@Blankj
Copy link
Owner Author

Blankj commented May 4, 2020

@DaveBoy 这需要你提供下具体错误信息我才能定位,或者你 debug 看看是哪里的问题

@artillerymans
Copy link

artillerymans commented May 9, 2020

问题

java.lang.OutOfMemoryError

描述 Bug

AndroidUtilCode 的版本: utilcodex:1.28.4
出现 Bug 的设备型号: 国产手表
设备的 Android 版本: 7.1.1

相关代码

LogUtils.print2File

异常堆栈

java.lang.OutOfMemoryError: Failed to allocate a 8204 byte allocation with 1348792 free bytes and 1317KB until OOM; failed due to fragmentation (required continguous free 12288 bytes where largest contiguous free 8192 bytes)
at java.nio.HeapByteBuffer.(HeapByteBuffer.java:54)
at java.nio.HeapByteBuffer.(HeapByteBuffer.java:49)
at java.nio.ByteBuffer.allocate(ByteBuffer.java:261)
at sun.nio.cs.StreamEncoder.(StreamEncoder.java:195)
at sun.nio.cs.StreamEncoder.(StreamEncoder.java:175)
at sun.nio.cs.StreamEncoder.forOutputStreamWriter(StreamEncoder.java:59)
at java.io.OutputStreamWriter.(OutputStreamWriter.java:111)
at java.io.FileWriter.(FileWriter.java:107)
at com.blankj.utilcode.util.FileIOUtils.writeFileFromString(FileIOUtils.java:548)
at com.blankj.utilcode.util.FileIOUtils.writeFileFromString(FileIOUtils.java:516)
at com.blankj.utilcode.util.UtilsBridge.writeFileFromString(UtilsBridge.java:255)
at com.blankj.utilcode.util.LogUtils.input2File(LogUtils.java:597)
at com.blankj.utilcode.util.LogUtils.print2File(LogUtils.java:507)
at com.blankj.utilcode.util.LogUtils.access$300(LogUtils.java:61)
at com.blankj.utilcode.util.LogUtils$1.run(LogUtils.java:225)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)

@Blankj
Copy link
Owner Author

Blankj commented May 21, 2020

@weizhizhu 这种问题都归结到我了么,你传个你百兆的数据,你业务层不做处理怎么还怪底层了?那所有 OOM 岂不都是系统 API 的问题?

@artillerymans
Copy link

@weizhizhu 这种问题都归结到我了么,你传个你百兆的数据,你业务层不做处理怎么还怪底层了?那所有 OOM 岂不都是系统 API 的问题?

糟糕,大哥,我请你吃顿饭吧 你别生气好不,我错了还不行吗

@Blankj
Copy link
Owner Author

Blankj commented May 27, 2020

@weizhizhu 这种问题都归结到我了么,你传个你百兆的数据,你业务层不做处理怎么还怪底层了?那所有 OOM 岂不都是系统 API 的问题?

糟糕,大哥,我请你吃顿饭吧 你别生气好不,我错了还不行吗

手动滑稽 🐶

@SSSSunrise
Copy link

描述 Bug

  • AndroidUtilCode 的版本:utilcodex:1.31.1
  • 出现 Bug 的设备型号: Honor 10 Lite
  • 设备的 Android 版本:API 27

屏幕适配
AdaptScreenUtils.adaptWidth(super.getResources(), 1080)
在华为小屏模式下失效

截图

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests