2011-11-03 13 views
1

我試圖使用內部API獲取一些低級網絡信息(Ec/Io,RSSI和RSCP的GSM手機),我能導入這些API,特別是我想使用com.android.internal.telephony.Phone和com.android.internal.telephony.PhoneFactory。 但是,當我嘗試使用這樣的PhoneFactory:如何使用com.android.internal.telephony.Phone(內部API)

電話mPhone;
Phone 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; 
} 

有人已經嘗試使用類電話成功?

回答

2

該sdk不支持這個,甚至正式推薦,但是,you can do this by reflection

風險在於,框架中的任何更改都會破壞您的代碼。

+0

嗨反射方法對我來說很有意思,你認爲,這可以通過谷歌檢測到,並防止你的應用程序得到功能或更糟的禁止? – vach

+0

你有沒有進一步與此?我真的很喜歡使用這個課程來更改我的電話號碼(當我從另一個提供商處拿到手機時,網絡沒有更新SIM卡)。我在KitKat上,並且SDK沒有將這些類顯示爲現有的類。 – fommil

+0

@fommil你有沒有設法改變你的方法? – Erdem