Build.VERSION.SDK_INT < Build.VERSION_CODES.Q 之前的版本的写法
TelephonyManager mTelephonyManager = (TelephonyManager) getContext().getSystemService(Context.TELEPHONY_SERVICE);
mTelephonyManager.listen(new PhoneStateListener(){
@Override
public void onSignalStrengthsChanged(SignalStrength signalStrength) {
super.onSignalStrengthsChanged(signalStrength);
try {
int signalLevel = signalStrength.getLevel();
Log.d(TAG, "onSignalStrengthsChanged: signalLevel "+signalLevel);
} catch (Exception e) {
//TODO: handle exception
}
}
},PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q 版本的写法
TelephonyManager mTelephonyManager = (TelephonyManager) getContext().getSystemService(Context.TELEPHONY_SERVICE);
SubscriptionInfo info = getNewerSlotSubscriptionInfo(0);//获取指定卡槽的信号强度
//区别就在这里,要再次获取指定卡槽的TelephonyManager
TelephonyManager mTelephonyManagerForSubscriptionId = mTelephonyManager.createForSubscriptionId(info.getSubscriptionId());
mTelephonyManagerForSubscriptionId.listen(new PhoneStateListener(){
@Override
public void onSignalStrengthsChanged(SignalStrength signalStrength) {
super.onSignalStrengthsChanged(signalStrength);
try {
int signalLevel = signalStrength.getLevel();
Log.d(TAG, "onSignalStrengthsChanged: signalLevel "+signalLevel);
} catch (Exception e) {
//TODO: handle exception
}
}
},PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
public synchronized SubscriptionInfo getNewerSlotSubscriptionInfo(int slot) {
if (ActivityCompat.checkSelfPermission(mContext, Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) {
List<SubscriptionInfo> list = SubscriptionManager.from(mContext).getActiveSubscriptionInfoList();
if (list != null) {
for (SubscriptionInfo info : list) {
if (slot == info.getSimSlotIndex()) {
LogUtils.d("SlotIndex : " + info.getSimSlotIndex() + " displayName : " + info.getDisplayName());
return info;
}
}
}
}
return null;
}
几个重要的Import
import android.telephony.PhoneStateListener;
import android.telephony.SignalStrength;
import android.telephony.SubscriptionInfo;
import android.telephony.TelephonyManager;
结语
以上代码都是手动敲的,如有错误,还请指出