草庐IT

三星手机「我的文件」应用闪退问题的解决方法

爱博客大伯 2024-05-18 原文

文章目录

1.「我的文件」闪退问题

发生闪退问题时的手机环境:

  • OneUI 版本:从 OneUI 3.x 升级到 OneUI 4.x
    这个版本升级中,增加了对 设备 ID(OAID)的访问控制。

  • 「我的文件」版本:出问题的版本有 v13.1.00.193,v13.0.01.21, v13.0.01.92, v13.1.00.171,版本信息取自 Galaxy Store 中「我的文件」评论区。
    v13.1.00.193 版本是 2022 年 5 月 12 日发布,是目前最新的版本。
    说明:升级「我的文件」版本并不能解决问题。

  • 手机型号:G9750(S10+),Note10+,S20,S21,S22

信息来源:盖乐世社区,以及 Galaxy Store 中 「我的文件」评论区

2. 解决方法

解决方法1:正解,允许使用设备 ID

1)打开“设置” 应用

2)点击“生物识别和安全性”

3)点击“其他安全设置”

4)点击“设备ID”

5)“允许使用设备ID”,启用这个功能

解决方法2:卸载更新

对于某些人可能是有用的。
不确定是否对所有人有用。

解决方法3: 使用其他【安全可靠】的文件管理工具

毕竟只是「我的文件」这一个 应用的问题,不是文件系统的问题,所以,使用其他的文件管理工具,也是一个解决方法。

警告

某个应用闪退,确实影响心情。尤其是「我的文件」这样用的比较频繁的系统应用,去 Galaxy Store 「我的文件」评论区打个差评,完全可以理解。

但一定不要做这件事:「恢复出厂设置」。
不要「恢复出厂设置」,
不要「恢复出厂设置」,
不要「恢复出厂设置」。

不要动不动就「恢复出厂设置」,否则会导致更糟糕的结果。

3. 允许使用设备 ID,为什么是正解?

这个解决方法 「允许使用设备 ID」 跟 「我的文件」看起来没有关系。

但,从闪退时的日志来看,是由于 OAID 获取不到导致的空指针异常,进而导致「我的文件」强制退出。

所以,解法是,允许「我的文件」获取 OAID (允许使用设备 ID)。

相关日志:
FATAL EXCEPTION: main Process: com.sec.android.app.myfiles, PID: 652 java.lang.NullPointerException: Parameter specified as non-null is null: method d.s.b.d.e, parameter oaid

4. 验证

updated on 2022-06-03

Step1:验证前的状态

我的手机中的「允许使用设备 ID」是打开的,忘记是什么时候打开的了。这也是「我的文件」一直没有闪退问题的原因。

我验证的方式是关闭「允许使用设备 ID」,看看是否会闪退。

「我的文件」版本是 v13.1.00.193 。是目前(2022.06.03)最新的版本。

Step2:关闭「允许使用设备 ID」

我把「允许使用设备 ID」关闭后,「我的文件」应用 在运行过程中闪退了,日志见下面。
此时,在不允许使用设备 ID 的前提下,「我的文件」会一直闪退。

Step3:打开「允许使用设备 ID」

打开「允许使用设备 ID」后,「我的文件」运行正常。

这时候,再次关闭「允许使用设备 ID」,「我的文件」也会正常运行了。
说明只需要获取一次设备 ID(OAID),而这个 ID 如果用户不重置,是不变的。所以「我的文件」可能把设备 ID (OAID)保存起来,不用每次获取了。

附:闪退时的调用栈

06-03 15:18:28.971 10118 22427 22427 E AndroidRuntime: FATAL EXCEPTION: main
06-03 15:18:28.971 10118 22427 22427 E AndroidRuntime: Process: com.sec.android.app.myfiles, PID: 22427
06-03 15:18:28.971 10118 22427 22427 E AndroidRuntime: java.lang.NullPointerException: Parameter specified as non-null is null: method d.s.b.d.e, parameter oaid
06-03 15:18:28.971 10118 22427 22427 E AndroidRuntime: 	at com.sec.android.app.myfiles.d.o.b3.o(Unknown Source:17)
06-03 15:18:28.971 10118 22427 22427 E AndroidRuntime: 	at com.sec.android.app.myfiles.d.o.b3.z(Unknown Source:0)
06-03 15:18:28.971 10118 22427 22427 E AndroidRuntime: 	at com.sec.android.app.myfiles.d.o.v0.a(Unknown Source:8)
06-03 15:18:28.971 10118 22427 22427 E AndroidRuntime: 	at com.sec.android.app.myfiles.d.o.m3.g$b.onServiceConnected(SourceFile:6)
06-03 15:18:28.971 10118 22427 22427 E AndroidRuntime: 	at android.app.LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:2235)
06-03 15:18:28.971 10118 22427 22427 E AndroidRuntime: 	at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:2268)
06-03 15:18:28.971 10118 22427 22427 E AndroidRuntime: 	at android.os.Handler.handleCallback(Handler.java:938)
06-03 15:18:28.971 10118 22427 22427 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:99)
06-03 15:18:28.971 10118 22427 22427 E AndroidRuntime: 	at android.os.Looper.loopOnce(Looper.java:226)
06-03 15:18:28.971 10118 22427 22427 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:313)
06-03 15:18:28.971 10118 22427 22427 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:8663)
06-03 15:18:28.971 10118 22427 22427 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
06-03 15:18:28.971 10118 22427 22427 E AndroidRuntime: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:567)
06-03 15:18:28.971 10118 22427 22427 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)

附:设备 ID 是什么?

早期的设备 ID 是 IMEI 和 MEID。GSM 手机中用 IMEI,CDMA 手机用 MEID,术语不一样,但意思一样。

早期的 Android 版本中,允许第三方应用获取 IMEI,但是新版本中,Google 官方禁止第三方应用获取 IMEI,需要使用其他方案代替 IMEI。

新方案是 移动安全联盟 MSA 提出的,采用 OAID 、VAID、AAID 等 设备 ID 替代 IMEI。

参与到移动安全联盟 OAID 方案的设备厂商有,华为、小米、OPPO、vivo、中兴、努比亚、魅族、联想、三星等。

所以,目前来说,设备 ID 一般指 OAID。 而 IMEI 是一直都在的,没有消失,只是严格限定使用 IMEI 的范围,例如第三方应用不能使用 IMEI。

OAID 的用途

OAID 的用于广告相关的业务,比如,个性化推荐,广告推广等,需要标识用户时,采用 OAID。(之前是采用 IMEI )

所以,「允许使用设备 ID」并不会造成用户数据的泄露,是采用了更安全的方案替代了之前的旧方案(第三方应用使用 IMEI 算是用户数据泄露)。

设备 ID 的全称

缩写全称
IMEIInternational Mobile Equipment Identity, 国际移动设备识别码
MEIDMobile Equipment Identifier,移动设备识别码。
UDIDUnique Device Identifier ,设备唯一标识符
OAIDOpen Anonymous Device Identifier,匿名设备标识符
VAIDVendor Anonymous Device Identifier,开发者匿名设备标识符
AAIDApplication Anonymous Device Identifier,应用匿名设备标识符

参考

移动安全联盟官网

移动智能终端补充设备标识规范-v20190516.pdf

有关三星手机「我的文件」应用闪退问题的解决方法的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  3. ruby - 使用 RubyZip 生成 ZIP 文件时设置压缩级别 - 2

    我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看ruby​​zip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d

  4. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  5. ruby - 其他文件中的 Rake 任务 - 2

    我试图在一个项目中使用rake,如果我把所有东西都放到Rakefile中,它会很大并且很难读取/找到东西,所以我试着将每个命名空间放在lib/rake中它自己的文件中,我添加了这个到我的rake文件的顶部:Dir['#{File.dirname(__FILE__)}/lib/rake/*.rake'].map{|f|requiref}它加载文件没问题,但没有任务。我现在只有一个.rake文件作为测试,名为“servers.rake”,它看起来像这样:namespace:serverdotask:testdoputs"test"endend所以当我运行rakeserver:testid时

  6. ruby-on-rails - 在 Rails 中将文件大小字符串转换为等效千字节 - 2

    我的目标是转换表单输入,例如“100兆字节”或“1GB”,并将其转换为我可以存储在数据库中的文件大小(以千字节为单位)。目前,我有这个:defquota_convert@regex=/([0-9]+)(.*)s/@sizes=%w{kilobytemegabytegigabyte}m=self.quota.match(@regex)if@sizes.include?m[2]eval("self.quota=#{m[1]}.#{m[2]}")endend这有效,但前提是输入是倍数(“gigabytes”,而不是“gigabyte”)并且由于使用了eval看起来疯狂不安全。所以,功能正常,

  7. ruby - Facter::Util::Uptime:Module 的未定义方法 get_uptime (NoMethodError) - 2

    我正在尝试设置一个puppet节点,但ruby​​gems似乎不正常。如果我通过它自己的二进制文件(/usr/lib/ruby/gems/1.8/gems/facter-1.5.8/bin/facter)在cli上运行facter,它工作正常,但如果我通过由ruby​​gems(/usr/bin/facter)安装的二进制文件,它抛出:/usr/lib/ruby/1.8/facter/uptime.rb:11:undefinedmethod`get_uptime'forFacter::Util::Uptime:Module(NoMethodError)from/usr/lib/ruby

  8. ruby-on-rails - Rails 3 中的多个路由文件 - 2

    Rails2.3可以选择随时使用RouteSet#add_configuration_file添加更多路由。是否可以在Rails3项目中做同样的事情? 最佳答案 在config/application.rb中:config.paths.config.routes在Rails3.2(也可能是Rails3.1)中,使用:config.paths["config/routes"] 关于ruby-on-rails-Rails3中的多个路由文件,我们在StackOverflow上找到一个类似的问题

  9. ruby - 将差异补丁应用于字符串/文件 - 2

    对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl

  10. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

    我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

随机推荐