小编mik*_*e47的帖子

requestCellInfoUpdate() 的正确用法是什么?

利用onSignalStrengthsChangedgetAllCellInfo()和相关方法,我的应用程序监视细胞信号数据并实时显示结果。我的代码在针对 API 28 及更低版本时工作得非常好,可以在数据发生变化时自动刷新数据。以 API 29 为目标会导致部分Android 10 设备无法更新数据,但并非全部。

我发现TelephonyManager.requestCellInfoUpdate()已添加到 API 29,可能(?)需要它来解决此问题。但是,除了Android Reference 上的简洁定义之外,我无法找到有关此方法的任何信息。是否需要使用该方法来刷新cell信息?是否有任何代码示例或进一步的解释?

如果该方法不相关,API 29 中是否存在可能导致此行为的其他更改?ACCESS_FINE_LOCATION已确认获得批准,这似乎是唯一的其他相关 API 更改。

android android-networking android-10.0

7
推荐指数
1
解决办法
3174
查看次数

Android TextView logcat 警告:调用 ShouldLayout()

我在运行 Android 12 (API 32) 的 Google Pixel 6 上的 Android 应用程序的 logcat 输出中反复看到以下警告消息:

W/TextView: onProvideContentCaptureStructure(): calling assumeLayout()

没有记录更多信息。每当我的应用程序的活动打开或刷新时,它都会出现多次。该活动包含嵌套在 中的多个TextView元素。RelativeLayoutScrollView

我无法找到有关此警告消息的任何指导。问题是什么,和/或我该如何解决它?

android textview

5
推荐指数
0
解决办法
129
查看次数

一些GSM设备因Android上的CDMA SignalStrength错误而崩溃

我的Android应用监控蜂窝信号强度.在CDMA设备上,它没有任何问题.在许多 GSM设备上,它没有任何问题.但是,在某些 GSM设备上,我收到强制关闭,并显示以下错误消息:

java.lang.ClassCastException:android.telephony.cdma.CdmaCellLocation无法强制转换为android.telephony.gsm.GsmCellLocation

我相当肯定这个问题发生在美国的一些三星设备上,当他们收到4G LTE信号时; 我相信它也会出现在其他设备和国家.我仍在尝试确定所涉及的确切服务提供商和设备.

以下是MyService.java的相关代码片段; 我已将错误消息引用的行标记为//********:

public void onCreate() {
    tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
    ...
}

public int onStartCommand(Intent in, int flags, int startId) {
    signalStrengthListener = new SignalStrengthListener();
    ((TelephonyManager)getSystemService(TELEPHONY_SERVICE)).listen(signalStrengthListener, SignalStrengthListener.LISTEN_SIGNAL_STRENGTHS | SignalStrengthListener.LISTEN_SERVICE_STATE | SignalStrengthListener.LISTEN_DATA_CONNECTION_STATE | SignalStrengthListener.LISTEN_CELL_LOCATION);
    return START_STICKY;
    ...
}

public void onSignalStrengthsChanged(SignalStrength signalStrength) {
    isGSM = signalStrength.isGsm();
    if (isGSM == true) {
        GCellLoc = (GsmCellLocation)tm.getCellLocation();    //********
    ...
}
Run Code Online (Sandbox Code Playgroud)

android.telephony.cdma如果仅在isGSM返回true 时触发此代码,则不确定为什么会出现任何内容.也许当检测到LTE信号时,就Android API而言,这会使手机处于某种双CDMA/GSM模式?我无法找到任何类似行为的文档.我怎么能在我的代码中处理这个?谢谢.

android telephony gsm telephonymanager lte

1
推荐指数
1
解决办法
1660
查看次数