如何禁用Android上的移動數(shù)據(jù)在別人告訴我要買一個應(yīng)用程序之前,快回過頭來。=)我剛得到了一個EVO,它很快就會咬斷電池。我下載了JuiceDefender來管理我的移動數(shù)據(jù)連接。這似乎進(jìn)展得相當(dāng)順利。然而,設(shè)置是非常有限的(即使在付費(fèi)版本)。到目前為止,我正試圖開發(fā)一個更可定制的電池節(jié)約應(yīng)用程序。我首先要做的主要事情是能夠隨心所欲地啟用/禁用移動數(shù)據(jù)連接。問題是我找不到任何關(guān)于如何做到這一點(diǎn)的代碼片段或文章。我發(fā)現(xiàn)的唯一件事是我不知道這有多準(zhǔn)確,但這是我瀏覽developer.android.com所能做的全部工作。ConnectivityManager cm = (ConnectivityManager) this.getSystemService(CONNECTIVITY_SERVICE);
cm.stopUsingNetworkFeature(ConnectivityManager.TYPE_MOBILE, "android.net.conn.CONNECTIVITY_CHANGE");
State state = cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();textView.setText(state.name());如果有人能告訴我什么能幫上忙的話,我會非常感激的。更新看來HTC Evo on Sprint不使用APN設(shè)置。我通過下載APNDroid并看著它失效來測試它。然后,我制作了一個快速應(yīng)用程序,將所有APN條目轉(zhuǎn)儲到屏幕上。這就產(chǎn)生了一個結(jié)果,那就是MMS。查看JuiceDefender運(yùn)行時的電話信息,我發(fā)現(xiàn)GSRP網(wǎng)絡(luò)正在被打開和關(guān)閉。這讓我相信通過代碼是有可能做到的,盡管我發(fā)現(xiàn)的每一頁詢問同樣的問題都說它無法完成。關(guān)鍵是他們都說要像APNDroid那樣做。有人能給我一些洞察力嗎。謝謝!
3 回答

慕碼人2483693
TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個贊
Method dataConnSwitchmethod; Class telephonyManagerClass; Object ITelephonyStub; Class ITelephonyClass; TelephonyManager telephonyManager = (TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE); if(telephonyManager.getDataState() == TelephonyManager.DATA_CONNECTED){ isEnabled = true; }else{ isEnabled = false; } telephonyManagerClass = Class.forName(telephonyManager.getClass().getName()); Method getITelephonyMethod = telephonyManagerClass.getDeclaredMethod("getITelephony"); getITelephonyMethod.setAccessible(true); ITelephonyStub = getITelephonyMethod.invoke(telephonyManager); ITelephonyClass = Class.forName(ITelephonyStub.getClass().getName()); if (isEnabled) { dataConnSwitchmethod = ITelephonyClass .getDeclaredMethod("disableDataConnectivity"); } else { dataConnSwitchmethod = ITelephonyClass .getDeclaredMethod("enableDataConnectivity"); } dataConnSwitchmethod.setAccessible(true); dataConnSwitchmethod.invoke(ITelephonyStub);
- 3 回答
- 0 關(guān)注
- 958 瀏覽
添加回答
舉報(bào)
0/150
提交
取消