android雙卡機(jī)中判斷當(dāng)前使用的是那張卡的數(shù)據(jù)流量

今天主要講的是在android 5.1及以上如何判斷雙卡手機(jī)中判斷當(dāng)前的流量是使用的那張卡。

(例子中的代碼會(huì)使用到j(luò)ava反射的知識(shí))


首先判斷數(shù)據(jù)流量開(kāi)關(guān)是否打開(kāi):

/**
* 判斷數(shù)據(jù)流量開(kāi)關(guān)是否打開(kāi)
* @param context
* @return
*/
public static boolean isMobileEnabled(Context context) {
try {
Method getMobileDataEnabledMethod = ConnectivityManager.class.getDeclaredMethod("getMobileDataEnabled");`

        getMobileDataEnabledMethod.setAccessible(true);

        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

        return (Boolean) getMobileDataEnabledMethod.invoke(connectivityManager);

    }catch (Exception e) {

e.printStackTrace();`

    }
    return true;
}

只有在已經(jīng)打開(kāi)了流量開(kāi)關(guān)的時(shí)候才會(huì)去判斷是使用的那張卡的流量,當(dāng)沒(méi)有開(kāi)啟數(shù)據(jù)流量時(shí)即不用判斷。

下邊的方法是用于獲取當(dāng)前手機(jī)有幾張可用的手機(jī)卡,獲取這些手機(jī)卡的基本信息。

public static ListgetActiveSubscriptionInfoList(Context context){
SubscriptionManager subscriptionManager=SubscriptionManager.from(context);

?    List list= (List) RefInvoker.invokeMethod(subscriptionManager, SubscriptionManager.class.getName(), "getActiveSubscriptionInfoList",

?            null, null);

?      return list;

}

獲取到的基本信息可能如下:

*{id=1, iccId=898600772XXXXXXXXXXX simSlotIndex=0 displayName=中國(guó)移動(dòng) carrierName=中國(guó)移動(dòng) nameSource=0 iconTint=-16746133 dataRoaming=0 iconBitmap=android.graphics.Bitmap@7e8713c mcc 460 mnc 0}*

simSlotIndex是卡槽位置,通過(guò)卡槽id便可以獲取到對(duì)應(yīng)的subId,最后通過(guò)subId則可以判斷出這張卡的流量是否打開(kāi)。

獲取subId代碼如下:

int[] subId = (int[]) RefInvoker.invokeStaticMethod(SubscriptionManager.class.getName(), "getSubId", new Class[]{int.class}, new Object[]{simid});

判斷對(duì)應(yīng)手機(jī)卡的流量狀態(tài)代碼如下:

TelephonyManager telephonyManager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);

int type= (int) RefInvoker.invokeMethod(telephonyManager,TelephonyManager.class.getName(), "getDataNetworkType",new Class[]{int.class}, new Object[]{subId[0]});

此時(shí)如果type!=0則表示打開(kāi)的是此卡的流量。


第一次寫文章,可能寫的不太好,大家多多包涵。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 用兩張圖告訴你,為什么你的 App 會(huì)卡頓? - Android - 掘金 Cover 有什么料? 從這篇文章中你...
    hw1212閱讀 13,994評(píng)論 2 59
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,045評(píng)論 25 709
  • 發(fā)完年終獎(jiǎng),收到銀行短信的五分鐘后,就有員工來(lái)提離職。 辦公室的姑娘們一如往常:“手續(xù)都在那邊墻上貼著,填完這張表...
    啟曦閱讀 451評(píng)論 0 0
  • 巫靈死了,我也離開(kāi)了,這個(gè)家散了。。。 醒來(lái)的噩耗 我離開(kāi)了,走過(guò)了很多地方,但我的思維越來(lái)越不真切,我記不住任何...
    顧雨清歌閱讀 629評(píng)論 0 2
  • 快樂(lè)中姐閱讀 179評(píng)論 0 0

友情鏈接更多精彩內(nèi)容