安全异常:getSerial:用户10134不满足访问设备标识符的要求。

15

我想从安卓手机中获取Build.getSerial()。在安卓 O 及以前版本,我需要 Manifest.permission.READ_PHONE_STATE 权限。然而在安卓 10 中,我遇到了上述异常。我的做法是将此权限添加到清单文件中。

<uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE"
        tools:ignore="ProtectedPermissions"/>

在这个活动中我需要请求权限,但是没有这样的权限。

ActivityCompat.requestPermissions(this@ListActivity, 
   arrayOf(Manifest.permission.READ_PHONE_STATE, 
   <<Manifest.permission.READ_PRIVILEGED_PHONE_STATE>>), 
   SERIAL_NUMBER_PERMISSION)

如果我没有权限,我怎么获取序列号呢?我该怎么做?

2个回答

9

请参考此文档

注意:从 Google Play 商店安装的第三方应用程序无法声明特权权限。

因此,只有 Google 应用程序和手机制造商应用程序(或者您是设备管理员或所有者应用程序)可以访问特权权限。


2
那么,解决方案是什么? - Bhavin Patel
谷歌目前还没有给出任何解决方案。这比“危险权限”更糟糕——你甚至无法要求用户授予权限! - M. Marmor

0
如果您只需要一个唯一的ID,并且不介意它对设备、用户和APK密钥都是唯一的,那么就使用。
android.provider.Settings.Secure.getString(getApplicationContext().getContentResolver(), android.provider.Settings.Secure.ANDROID_ID);

我希望它对每个设备都是唯一的。 - james04
据传闻,从adb devices -l获取的ID是“不安全”的,因此您不允许在应用程序内部查看它。El Goog没有解决此问题的方法,例如具有单向加密的令牌。 - Phlip

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接