我正在尝试通过 Android 应用访问 IMS 注册状态。目前,对于 Android < 10,我使用反射来访问状态:
TelephonyManager tm = (TelephonyManager) app.getSystemService(app.getBaseContext().TELEPHONY_SERVICE);
Class c = Class.forName(tm.getClass().getName());
Method m = c.getDeclaredMethod("isImsRegistered");
m.setAccessible(true);
boolean imsRegisterd = m.invoke(tm);
显然,这不适用于 Android 10:https://developer.android.com/about/versions/10/non-sdk-q#new-sdk
Landroid/telephony/TelephonyManager;->isImsRegistered()Z # SystemAPI ImsMmTelManager#registerImsRegistrationCallback to listen IMS registration state change
不幸的是,我不知道如何使用它。我搜索了各种网页,但没有找到任何示例来获取 ImsMmTelManager 的实例或注册回调。有些线程说用@SystemApi 注释的类无论如何都无法访问,所以我想知道我是否可以用这些回调来做到这一点。基本上,我只想知道设备是否通过 IMS 注册。我也可以通过亚行请求状态,如果这样更容易的话。
感谢您的建议。