我一直在尝试访问我的安卓双卡手机(品牌是 LKD)上的一些功能。我已经设法通过 java 反射获得 TelephonyManager 和 ITelephony 的功能,并让它们运行。但是我想获得两张 sim 卡的信号强度,我看不到通过反射来做到这一点的方法。我可以通过具有 onSignalStrengthsChanged() 函数的 PhoneStateListener 获得插槽 1 中的第一张 sim 卡。
有没有人对此有一些提示?我从反射中得到的功能:
###stanard methods:###
adjustModemRadioPower - boolean: int, int
adjustModemRadioPowerByBand - boolean: int, int
btSimapApduRequest - int: int, java.lang.String, android.telephony.BtSimapOperResponse
btSimapConnectSIM - int: int, android.telephony.BtSimapOperResponse
btSimapDisconnectSIM - int:
btSimapPowerOffSIM - int:
btSimapPowerOnSIM - int: int, android.telephony.BtSimapOperResponse
btSimapResetSIM - int: int, android.telephony.BtSimapOperResponse
disableLocationUpdates - void:
disableLocationUpdatesGemini - void: int
enableLocationUpdates - void:
enableLocationUpdatesGemini - void: int
equals - boolean: java.lang.Object
from - class android.telephony.TelephonyManager: android.content.Context
getAllCellInfo - interface java.util.List:
getCallState - int:
getCallStateGemini - int: int
getCdmaEriIconIndex - int:
getCdmaEriIconMode - int:
getCdmaEriText - class java.lang.String:
getCellLocation - class android.telephony.CellLocation:
getCellLocationGemini - class android.telephony.CellLocation: int
getClass - class java.lang.Class:
getCompleteVoiceMailNumber - class java.lang.String:
getCurrentPhoneType - int:
getDataActivity - int:
getDataState - int:
getDataStateGemini - int: int
getDefault - class android.telephony.TelephonyManager:
getDeviceId - class java.lang.String:
getDeviceIdGemini - class java.lang.String: int
getDeviceSoftwareVersion - class java.lang.String:
getIccCardType - class java.lang.String:
getIccCardTypeGemini - class java.lang.String: int
getIsimDomain - class java.lang.String:
getIsimImpi - class java.lang.String:
getIsimImpu - class [Ljava.lang.String;:
getLine1AlphaTag - class java.lang.String:
getLine1AlphaTagGemini - class java.lang.String: int
getLine1Number - class java.lang.String:
getLine1NumberGemini - class java.lang.String: int
getLteOnCdmaMode - int:
getLteOnCdmaModeStatic - int:
getMaxPdpNum - int: int
getMissedCallCount - int:
getMobileRevisionAndIMEI - void: int, android.os.Message
getMsisdn - class java.lang.String:
getNeighboringCellInfo - interface java.util.List:
getNeighboringCellInfoGemini - interface java.util.List: int
getNetworkClass - int: int
getNetworkCountryIso - class java.lang.String:
getNetworkCountryIsoGemini - class java.lang.String: int
getNetworkOperator - class java.lang.String:
getNetworkOperatorGemini - class java.lang.String: int
getNetworkOperatorName - class java.lang.String:
getNetworkOperatorNameGemini - class java.lang.String: int
getNetworkType - int:
getNetworkTypeGemini - int: int
getNetworkTypeName - class java.lang.String:
getNetworkTypeName - class java.lang.String: int
getNetworkTypeNameGemini - class java.lang.String: int
getPhoneType - int:
getPhoneType - int: int
getPhoneTypeGemini - int: int
getRadioType - int: int
getSN - class java.lang.String:
getSimCountryIso - class java.lang.String:
getSimCountryIsoGemini - class java.lang.String: int
getSimOperator - class java.lang.String:
getSimOperatorGemini - class java.lang.String: int
getSimOperatorName - class java.lang.String:
getSimOperatorNameGemini - class java.lang.String: int
getSimSerialNumber - class java.lang.String:
getSimSerialNumberGemini - class java.lang.String: int
getSimState - int:
getSimStateGemini - int: int
getSmsDefaultSim - int:
getSpNameInEfSpn - class java.lang.String:
getSpNameInEfSpnGemini - class java.lang.String: int
getSubscriberId - class java.lang.String:
getSubscriberIdGemini - class java.lang.String: int
getVoiceMailAlphaTag - class java.lang.String:
getVoiceMailAlphaTagGemini - class java.lang.String: int
getVoiceMailNumber - class java.lang.String:
getVoiceMailNumberGemini - class java.lang.String: int
getVoiceMessageCount - int:
getVoiceMessageCountGemini - int: int
hasIccCard - boolean:
hasIccCardGemini - boolean: int
hashCode - int:
isIccCardProviderAsMvno - boolean:
isIccCardProviderAsMvnoGemini - boolean: int
isNetworkRoaming - boolean:
isNetworkRoamingGemini - boolean: int
isOperatorMvnoForEfPnn - class java.lang.String:
isOperatorMvnoForEfPnnGemini - class java.lang.String: int
isOperatorMvnoForImsi - class java.lang.String:
isOperatorMvnoForImsiGemini - class java.lang.String: int
isSmsCapable - boolean:
isVoiceCapable - boolean:
listen - void: android.telephony.PhoneStateListener, int
listenGemini - void: android.telephony.PhoneStateListener, int, int
notify - void:
notifyAll - void:
simAuth - class java.lang.String: java.lang.String
simAuthGemini - class java.lang.String: java.lang.String, int
toString - class java.lang.String:
uSimAuth - class java.lang.String: java.lang.String, java.lang.String
uSimAuthGemini - class java.lang.String: java.lang.String, java.lang.String, int
wait - void:
wait - void: long
wait - void: long, int
###declared methods###
adjustModemRadioPower - boolean: int, int
adjustModemRadioPowerByBand - boolean: int, int
btSimapApduRequest - int: int, java.lang.String, android.telephony.BtSimapOperResponse
btSimapConnectSIM - int: int, android.telephony.BtSimapOperResponse
btSimapDisconnectSIM - int:
btSimapPowerOffSIM - int:
btSimapPowerOnSIM - int: int, android.telephony.BtSimapOperResponse
btSimapResetSIM - int: int, android.telephony.BtSimapOperResponse
disableLocationUpdates - void:
disableLocationUpdatesGemini - void: int
enableLocationUpdates - void:
enableLocationUpdatesGemini - void: int
getAllCellInfo - interface java.util.List:
getCallState - int:
getCallStateGemini - int: int
getCdmaEriIconIndex - int:
getCdmaEriIconMode - int:
getCdmaEriText - class java.lang.String:
getCellLocation - class android.telephony.CellLocation:
getCellLocationGemini - class android.telephony.CellLocation: int
getCompleteVoiceMailNumber - class java.lang.String:
getCurrentPhoneType - int:
getDataActivity - int:
getDataState - int:
getDataStateGemini - int: int
getDeviceId - class java.lang.String:
getDeviceIdGemini - class java.lang.String: int
getDeviceSoftwareVersion - class java.lang.String:
getIccCardType - class java.lang.String:
getIccCardTypeGemini - class java.lang.String: int
getIsimDomain - class java.lang.String:
getIsimImpi - class java.lang.String:
getIsimImpu - class [Ljava.lang.String;:
getLine1AlphaTag - class java.lang.String:
getLine1AlphaTagGemini - class java.lang.String: int
getLine1Number - class java.lang.String:
getLine1NumberGemini - class java.lang.String: int
getLteOnCdmaMode - int:
getMissedCallCount - int:
getMobileRevisionAndIMEI - void: int, android.os.Message
getMsisdn - class java.lang.String:
getNeighboringCellInfo - interface java.util.List:
getNeighboringCellInfoGemini - interface java.util.List: int
getNetworkCountryIso - class java.lang.String:
getNetworkCountryIsoGemini - class java.lang.String: int
getNetworkOperator - class java.lang.String:
getNetworkOperatorGemini - class java.lang.String: int
getNetworkOperatorName - class java.lang.String:
getNetworkOperatorNameGemini - class java.lang.String: int
getNetworkType - int:
getNetworkTypeGemini - int: int
getNetworkTypeName - class java.lang.String:
getNetworkTypeNameGemini - class java.lang.String: int
getPhoneType - int:
getPhoneTypeGemini - int: int
getSN - class java.lang.String:
getSimCountryIso - class java.lang.String:
getSimCountryIsoGemini - class java.lang.String: int
getSimOperator - class java.lang.String:
getSimOperatorGemini - class java.lang.String: int
getSimOperatorName - class java.lang.String:
getSimOperatorNameGemini - class java.lang.String: int
getSimSerialNumber - class java.lang.String:
getSimSerialNumberGemini - class java.lang.String: int
getSimState - int:
getSimStateGemini - int: int
getSmsDefaultSim - int:
getSpNameInEfSpn - class java.lang.String:
getSpNameInEfSpnGemini - class java.lang.String: int
getSubscriberId - class java.lang.String:
getSubscriberIdGemini - class java.lang.String: int
getVoiceMailAlphaTag - class java.lang.String:
getVoiceMailAlphaTagGemini - class java.lang.String: int
getVoiceMailNumber - class java.lang.String:
getVoiceMailNumberGemini - class java.lang.String: int
getVoiceMessageCount - int:
getVoiceMessageCountGemini - int: int
hasIccCard - boolean:
hasIccCardGemini - boolean: int
isIccCardProviderAsMvno - boolean:
isIccCardProviderAsMvnoGemini - boolean: int
isNetworkRoaming - boolean:
isNetworkRoamingGemini - boolean: int
isOperatorMvnoForEfPnn - class java.lang.String:
isOperatorMvnoForEfPnnGemini - class java.lang.String: int
isOperatorMvnoForImsi - class java.lang.String:
isOperatorMvnoForImsiGemini - class java.lang.String: int
isSmsCapable - boolean:
isVoiceCapable - boolean:
listen - void: android.telephony.PhoneStateListener, int
listenGemini - void: android.telephony.PhoneStateListener, int, int
simAuth - class java.lang.String: java.lang.String
simAuthGemini - class java.lang.String: java.lang.String, int
uSimAuth - class java.lang.String: java.lang.String, java.lang.String
uSimAuthGemini - class java.lang.String: java.lang.String, java.lang.String, int
from - class android.telephony.TelephonyManager: android.content.Context
getDefault - class android.telephony.TelephonyManager:
getDefaultSim - int:
getITelephony - interface com.android.internal.telephony.ITelephony:
getLteOnCdmaModeStatic - int:
getMaxPdpNum - int: int
getNetworkClass - int: int
getNetworkTypeName - class java.lang.String: int
getPhoneType - int: int
getPhoneTypeFromNetworkType - int:
getPhoneTypeFromProperty - int:
getProcCmdLine - class java.lang.String:
getRadioType - int: int
getSubscriberInfo - interface com.android.internal.telephony.IPhoneSubInfo:
getSubscriberInfo - interface com.android.internal.telephony.IPhoneSubInfo: int
###ITelephony methods###
adjustModemRadioPower - boolean: int, int
adjustModemRadioPowerByBand - boolean: int, int, int
answerRingingCall - void:
answerRingingCallGemini - void: int
aquire3GSwitchLock - int:
asBinder - interface android.os.IBinder:
btSimapApduRequest - int: int, java.lang.String, android.telephony.BtSimapOperResponse
btSimapConnectSIM - int: int, android.telephony.BtSimapOperResponse
btSimapDisconnectSIM - int:
btSimapPowerOffSIM - int:
btSimapPowerOnSIM - int: int, android.telephony.BtSimapOperResponse
btSimapResetSIM - int: int, android.telephony.BtSimapOperResponse
call - void: java.lang.String
callGemini - void: java.lang.String, int
cancelMissedCallsNotification - void:
cancelMissedCallsNotificationGemini - void: int
cleanupApnTypeGemini - int: java.lang.String, int
closeIccLogicalChannel - boolean: int
closeIccLogicalChannelGemini - boolean: int, int
dial - void: java.lang.String
dialGemini - void: java.lang.String, int
disableApnType - int: java.lang.String
disableApnTypeGemini - int: java.lang.String, int
disableDataConnectivity - boolean:
disableDataConnectivityGemini - int: int
disableLocationUpdates - void:
disableLocationUpdatesGemini - void: int
enableApnType - int: java.lang.String
enableApnTypeGemini - int: java.lang.String, int
enableDataConnectivity - boolean:
enableDataConnectivityGemini - int: int
enableLocationUpdates - void:
enableLocationUpdatesGemini - void: int
endCall - boolean:
endCallGemini - boolean: int
equals - boolean: java.lang.Object
get3GCapabilitySIM - int:
get3GSwitchAllowed3GSlots - int:
getActivePhoneType - int:
getActivePhoneTypeGemini - int: int
getAdnStorageInfo - class [I: int
getAllCellInfo - interface java.util.List:
getCallState - int:
getCallStateGemini - int: int
getCdmaEriIconIndex - int:
getCdmaEriIconMode - int:
getCdmaEriText - class java.lang.String:
getCellLocation - class android.os.Bundle:
getCellLocationGemini - class android.os.Bundle: int
getClass - class java.lang.Class:
getDataActivity - int:
getDataActivityGemini - int: int
getDataState - int:
getDataStateGemini - int: int
getGateway - class java.lang.String: java.lang.String
getGatewayGemini - class java.lang.String: java.lang.String, int
getIccATR - class java.lang.String:
getIccATRGemini - class java.lang.String: int
getIccCardType - class java.lang.String:
getIccCardTypeGemini - class java.lang.String: int
getInterfaceDescriptor - class java.lang.String:
getInterfaceName - class java.lang.String: java.lang.String
getInterfaceNameGemini - class java.lang.String: java.lang.String, int
getIpAddress - class java.lang.String: java.lang.String
getIpAddressGemini - class java.lang.String: java.lang.String, int
getLastError - int:
getLastErrorGemini - int: int
getLine1AlphaTag - class java.lang.String: int
getLine1Number - class java.lang.String: int
getLteOnCdmaMode - int:
getMissedCallCount - int:
getMobileRevisionAndIMEI - void: int, android.os.Message
getNeighboringCellInfo - interface java.util.List:
getNeighboringCellInfoGemini - interface java.util.List: int
getNetworkCountryIsoGemini - class java.lang.String: int
getNetworkOperatorGemini - class java.lang.String: int
getNetworkOperatorNameGemini - class java.lang.String: int
getNetworkType - int:
getNetworkTypeGemini - int: int
getPendingMmiCodesGemini - int: int
getPreciseCallState - int:
getSN - class java.lang.String:
getScAddressGemini - class java.lang.String: int
getServiceState - class android.os.Bundle:
getServiceStateGemini - class android.os.Bundle: int
getSimCountryIso - class java.lang.String: int
getSimIndicatorState - int:
getSimIndicatorStateGemini - int: int
getSimOperator - class java.lang.String: int
getSimOperatorName - class java.lang.String: int
getSimSerialNumber - class java.lang.String: int
getSimState - int: int
getSmsDefaultSim - int:
getSpNameInEfSpn - class java.lang.String:
getSpNameInEfSpnGemini - class java.lang.String: int
getSubscriberId - class java.lang.String: int
getSubscriberInfo - interface com.android.internal.telephony.IPhoneSubInfo: int
getVoiceMailAlphaTag - class java.lang.String: int
getVoiceMailNumber - class java.lang.String: int
getVoiceMessageCount - int:
getVoiceMessageCountGemini - int: int
handlePinMmi - boolean: java.lang.String
handlePinMmiGemini - boolean: java.lang.String, int
hasIccCard - boolean:
hasIccCardGemini - boolean: int
hashCode - int:
is3GSwitchLocked - boolean:
is3GSwitchManualChange3GAllowed - boolean:
is3GSwitchManualEnabled - boolean:
isDataConnectivityPossible - boolean:
isDataConnectivityPossibleGemini - boolean: int
isFDNEnabled - boolean:
isFDNEnabledGemini - boolean: int
isIccCardProviderAsMvno - boolean:
isIccCardProviderAsMvnoGemini - boolean: int
isIdle - boolean:
isIdleGemini - boolean: int
isNetworkRoamingGemini - boolean: int
isOffhook - boolean:
isOffhookGemini - boolean: int
isOperatorMvnoForEfPnn - class java.lang.String:
isOperatorMvnoForEfPnnGemini - class java.lang.String: int
isOperatorMvnoForImsi - class java.lang.String:
isOperatorMvnoForImsiGemini - class java.lang.String: int
isPhbReady - boolean:
isPhbReadyGemini - boolean: int
isRadioOn - boolean:
isRadioOnGemini - boolean: int
isRinging - boolean:
isRingingGemini - boolean: int
isSimInsert - boolean: int
isSimPinEnabled - boolean:
isTestIccCard - boolean:
isTestIccCardGemini - boolean: int
isVTIdle - boolean:
isVoiceIdle - boolean:
needsOtaServiceProvisioning - boolean:
notify - void:
notifyAll - void:
openIccLogicalChannel - int: java.lang.String
openIccLogicalChannelGemini - int: java.lang.String, int
openIccLogicalChannelWithSw - class [B: java.lang.String
openIccLogicalChannelWithSwGemini - class [B: java.lang.String, int
registerForSimModeChange - void: android.os.IBinder, int
release3GSwitchLock - boolean: int
set3GCapabilitySIM - boolean: int
setDataRoamingEnabledGemini - void: boolean, int
setDefaultPhone - void: int
setGprsConnType - void: int, int
setGprsTransferType - void: int
setGprsTransferTypeGemini - void: int, int
setRadio - boolean: boolean
setRadioOff - boolean:
setRoamingIndicatorNeddedProperty - void: boolean, boolean
setScAddressGemini - void: java.lang.String, int
showCallScreen - boolean:
showCallScreenGemini - boolean: int
showCallScreenWithDialpad - boolean: boolean
showCallScreenWithDialpadGemini - boolean: boolean, int
silenceRinger - void:
silenceRingerGemini - void: int
simAuth - class java.lang.String: java.lang.String
simAuthGemini - class java.lang.String: java.lang.String, int
supplyPin - boolean: java.lang.String
supplyPinGemini - boolean: java.lang.String, int
supplyPuk - boolean: java.lang.String, java.lang.String
supplyPukGemini - boolean: java.lang.String, java.lang.String, int
toString - class java.lang.String:
toggleRadioOnOff - void:
transmitIccBasicChannel - class java.lang.String: int, int, int, int, int, java.lang.String
transmitIccBasicChannelGemini - class java.lang.String: int, int, int, int, int, java.lang.String, int
transmitIccLogicalChannel - class java.lang.String: int, int, int, int, int, int, java.lang.String
transmitIccLogicalChannelGemini - class java.lang.String: int, int, int, int, int, int, java.lang.String, int
transmitIccSimIO - class [B: int, int, int, int, int, java.lang.String
transmitIccSimIOGemini - class [B: int, int, int, int, int, java.lang.String, int
uSimAuth - class java.lang.String: java.lang.String, java.lang.String
uSimAuthGemini - class java.lang.String: java.lang.String, java.lang.String, int
unregisterForSimModeChange - void: android.os.IBinder
updateServiceLocation - void:
updateServiceLocationGemini - void: int
wait - void:
wait - void: long
wait - void: long, int
顺便说一句,似乎两张 sim 卡同时处于活动状态(无需在 sim 卡之间切换),因为我可以使用两个电话号码拨打电话,而无需在手机上切换 sim 卡。
谢谢!