硬件属性管理器不起作用



我正在尝试使用HardwarePropertiesManager(https://developer.android.com/reference/android/os/HardwarePropertiesManager.html)访问信息。我正在使用带有以下代码的 Android 7.0(API 级别 24):

公共类 MainActivity 扩展 AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView helloTV = findViewById(R.id.helloTV); 如果 (Build.VERSION.SDK_INT>= Build.VERSION_CODES。N) { HardwarePropertiesManager hardwarePropertiesManager = getApplicationContext().getSystemService(HardwarePropertiesManager.class); cpuUsageInfo[] cpuUsages = hardwarePropertiesManager.getCpuUsages();///...

现在,当我的应用程序找到hardwarePropertiesManager.getCpuUsages();行时,它会引发以下异常:

java.lang.RuntimeException: 无法启动活动 ComponentInfo{gr.serafeim.sensorplayground/gr.serafeim.sensorplayground.MainActivity}: java.lang.SecurityException: 调用方不是设备或配置文件所有者或绑定的 VrListenerService。 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2659) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2724) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1473) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6123) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)  由以下原因引起:java.lang.SecurityException:调用方不是设备或配置文件所有者或绑定的 VrListenerService。 at android.os.Parcel.readException(Parcel.java:1683) at android.os.Parcel.readException(Parcel.java:1636) at android.os.IHardwarePropertiesManager$Stub$Proxy.getCpuUsages(IHardwarePropertiesManager.java:127) at android.os.HardwarePropertiesManager.getCpuUsages(HardwarePropertiesManager.java:155) at gr.serafeim.sensorplayground.MainActivity.onCreate(MainActivity.java:21) at android.app.Activity.performCreate(Activity.java:6672) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1140) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2612) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2724) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1473) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6123) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757) 有人

可以向我解释一下:

  • 什么是"设备或配置文件所有者" - 我的应用程序如何成为其中之一?
  • 什么是"VrListenerService">
  • 有什么方法可以实际使用该HardwarePropertiesManager来获取有关我的CPU的信息,或者这是一个丢失的原因?

getCpuUsages的文档只是说,如果设备所有者或当前VR服务以外的内容试图检索该服务提供的信息,它会抛出一个SecurityException- 这并没有澄清任何事情。

经过一番研究,我发现了问题所在。仅允许在企业配置的 Android 设备中使用HardwarePropertiesManagerAPI(请参阅此处 https://developer.android.com/work/overview.html 和此处 https://sdgsystems.com/blog/introduction-android-work)。因此,此 API 主要用于展台模式(或自带设备 - BYOD)的设备,以便您轻松远程监控此设备。"设备所有者"或"配置文件所有者"是指 BYOD 或 COSU - 企业拥有的单机版应用程序或用户配置文件。

因此,不幸的是,普通设备无法使用此 API。

最新更新