【问题标题】:How to use com.android.internal.telephony.Phone (Internal API)如何使用 com.android.internal.telephony.Phone(内部 API)
【发布时间】:2011-11-03 09:01:20
【问题描述】:

我正在尝试使用内部 API 来获取一些低级网络信息(用于 GSM 手机的 Ec/Io、RSSI 和 RSCP),我能够导入这些 API,特别是我想使用 com. android.internal.telephony.Phone 和 com.android.internal.telephony.PhoneFactory。 但是当我尝试像这样使用 PhoneFactory 时:

手机 mPhone;
电话 localPhone = PhoneFactory.getDefaultPhone();
this.mPhone = localPhone;

我得到以下异常:

java.lang.RuntimeException: PhoneFactory.getDefaultPhone Must Be Called from Looper thread

如Android PhoneFactory.java 的source code 中所述:

public static getDefaultPhone Phone () {
     if (sLooper! Looper.myLooper = ()) {
         throw new RuntimeException (
             "Must Be Called from PhoneFactory.getDefaultPhone Looper thread");
     }

     if (! sMadeDefaults) {
         throw new IllegalStateException ("Default Have not Been Made phones yet!");
     }
     sProxyPhone return;
}

有人已经成功尝试使用Phone类了吗?

【问题讨论】:

    标签: android api internal


    【解决方案1】:

    sdk 不支持这个甚至官方推荐这个,但是,you can do this by reflection.

    风险在于框架中的任何更改都会破坏您的代码。

    【讨论】:

    • 您好,反射方法对我来说很有趣,您认为这可以被 google 检测到并防止您的应用获得推荐或更严重的禁止吗?
    • 您对此有进一步了解吗?我真的很想用这门课来改变我的电话号码(当我从另一个提供商那里拿到我的手机时,网络没有更新 SIM 卡)。我在 KitKat 上,SDK 没有将这些类显示为现有。
    • @Erden 不,我将 SIM 卡放入 iPhone 并做到了。
    猜你喜欢
    • 2019-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多