E File error accessing recents directory (directory doesn't exist?). 2023-07-06 22:07:56.703 9908-9908 AndroidRuntime com.example.chpter06 E FATAL EXCEPTION: main Process: com.example.chpter06, PID: 9908 java.lang.IllegalArgumentException: Empty values at android.database.sqlite.SQLiteDatabase.updateWithOnConflict(SQLiteDatabase.java:1772) at android.database.sqlite.SQLiteDatabase.update(SQLiteDatabase.java:1752) at com.example.chpter06.database.UserDBHelper.update(UserDBHelper.java:110) at com.example.chpter06.SQLiteHelperActivity.onClick(SQLiteHelperActivity.java:100)
时间: 2024-02-10 12:22:49 浏览: 1051
根据你提供的错误信息,看起来是在访问最近目录时发生了文件错误。同时,还有一个严重的异常错误,即java.lang.IllegalArgumentException: Empty values。这个异常可能是由于传递给SQLiteDatabase.update()方法的值为空引起的。
要解决这个问题,你可以按照以下步骤进行排查和修复:
1. 确认最近目录是否存在:检查代码中访问最近目录的部分,确保目录存在。你可以使用文件管理器或命令行查看文件系统中是否存在该目录。
2. 检查传递给SQLiteDatabase.update()方法的参数:检查代码中的update方法调用,确保传递给该方法的值不为空。如果参数为空,可能需要重新检查代码逻辑,并确保传递正确的参数值。
3. 检查数据库操作的逻辑:查看UserDBHelper.java文件中的update方法实现,确保在执行数据库更新操作之前,所有必需的参数值都已正确设置。
4. 检查SQLiteHelperActivity.java文件中的onClick方法:检查点击事件处理方法,确认在调用UserDBHelper.update()方法之前是否对参数进行了正确的初始化。
通过以上步骤的排查和修复,你应该能够解决这个问题。如果问题仍然存在,请提供更多的代码信息,以便我能够给出更具体的建议。
相关问题
安卓APP访问CAN有如下报错05-16 18:09:54.015 8022 8022 D can_test: nCanFd = 67 05-16 18:09:54.015 8022 8022 D can_test: Send can_id 05-16 18:09:54.013 8022 8022 I com.bin.cantest: type=1400 audit(0.0:444): avc: denied { ioctl } for path="socket:[114169]" dev="sockfs" ino=114169 ioctlcmd=0x8933 scontext=u:r:system_app:s0 tcontext=u:r:system_app:s0 tclass=can_socket permissive=1 05-16 18:09:54.015 8022 8022 D can_test: Send Error frame[0] 05-16 18:09:54.013 8022 8022 I com.bin.cantest: type=1400 audit(0.0:445): avc: denied { bind } for scontext=u:r:system_app:s0 tcontext=u:r:system_app:s0 tclass=can_socket permissive=1 05-16 18:09:54.013 8022 8022 I com.bin.cantest: type=1400 audit(0.0:446): avc: denied { write } for path="socket:[114169]" dev="sockfs" ino=114169 scontext=u:r:system_app:s0 tcontext=u:r:system_app:s0 tclass=can_socket permissive=1 05-16 18:09:54.020 0 0 W audit : audit_lost=15 audit_rate_limit=5 audit_backlog_limit=64 05-16 18:09:54.020 0 0 E audit : rate limit exceeded 05-16 18:09:54.060 305 388 W APM::AudioPolicyEngine: getDevicesForStrategy() unknown strategy: -1 05-16 18:09:54.060 459 477 I system_server: oneway function results will be dropped but finished with status OK and parcel size 4 05-16 18:09:54.150 459 1215 E TaskPersister: File error accessing recents directory (directory doesn't exist?). 05-16 18:09:56.930 274 401 D AudioHardwareTiny: do_out_standby,out = 0xea043b70,device = 0x2 05-16 18:09:56.932 274 401 D alsa_route: route_set_controls() set route 24 05-16 18:09:56.941 274 401 D AudioHardwareTiny: close device 05-16 18:09:56.943 459 477 I system_server: oneway function results will be dropped but finished with status OK and parcel size 4 05-16 18:10:00.010 620 620 D KeyguardClockSwitch: Updating clock:
这个报错信息表明应用程序被拒绝了访问CAN总线的权限。在Android系统中,访问CAN总线需要特定的权限,而且在某些情况下需要root权限才能访问。
要解决这个问题,可以尝试以下步骤:
1. 确保应用程序已经被授权访问CAN总线的权限。可以在应用程序的AndroidManifest.xml文件中添加相应的权限声明,例如:
```xml
<uses-permission android:name="android.permission.CAN_BUS"/>
```
2. 确保设备已经被授权访问CAN总线。在一些设备上,访问CAN总线需要root权限。可以使用root权限管理工具授权应用程序访问CAN总线。
3. 如果应用程序仍然无法访问CAN总线,可以尝试修改安全策略。在安卓系统中,SELinux是一个重要的安全机制,它限制了进程和应用程序的权限。如果SELinux设置不正确,可能会导致应用程序无法访问CAN总线。可以使用sepolicy或chcon工具修改策略,以允许应用程序访问CAN总线。
需要注意的是,修改安全策略可能会对系统安全造成影响,因此需要谨慎操作。同时,对于一些较为敏感的权限,例如访问CAN总线,需要确保应用程序不会滥用这些权限。
11/6/2023 -- 10:21:02 - <Error> - [ERRCODE: SC_ERR_PCRE_MATCH(2)] - pcre_exec failed: ret -1, optstr "ip.addr == 172.16.31.17 && http.host == "pkg.loongnix.cn" && http.request_uri == "/"; msg: "Rejected IP 172.16.31.17 accessing http://pkg.loongnix.cn"; sid: 1000001; rev:1; flow:to_server,established; reject;" 11/6/2023 -- 10:21:02 - <Error> - [ERRCODE: SC_ERR_INVALID_SIGNATURE(39)] - error parsing signature "alert http any any -> any any (ip.addr == 172.16.31.17 && http.host == "pkg.loongnix.cn" && http.request_uri == "/"; msg: "Rejected IP 172.16.31.17 accessing http://pkg.loongnix.cn"; sid: 1000001; rev:1; flow:to_server,established; reject;)" from file /home/wzw/gy_tsource_zw/pack/rules/test.rules at line 2
根据 Suricata 的错误信息,可以看到有两个错误:
1. `[ERRCODE: SC_ERR_PCRE_MATCH(2)] - pcre_exec failed: ret -1`:表示匹配规则时出现了错误,可能是正则表达式的问题。
2. `[ERRCODE: SC_ERR_INVALID_SIGNATURE(39)] - error parsing signature`:表示解析规则时出现了错误,可能是规则的格式有误。
根据错误信息,可能是规则中的引号问题导致的错误。请尝试使用以下规则:
```
alert http any any -> any any (ip.addr == 172.16.31.17 && http.host == "pkg.loongnix.cn" && http.request_uri == "/"; msg: "Rejected IP 172.16.31.17 accessing http://pkg.loongnix.cn"; sid: 1000001; rev:1; flow:to_server,established; reject;)
```
注意,在规则中使用双引号时,需要在引号前加上转义字符 `\`,或者使用单引号来包裹字符串。
阅读全文