免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Android5.0使用反射設(shè)置首選網(wǎng)絡(luò)類型、SIM鎖定解鎖、PIN碼設(shè)置
標簽: PhoneandroidPIN
2016-06-16 12:11 36人閱讀 評論(0) 收藏 舉報
分類:

我們可以在Setting中找到有關(guān)Phone和SIM相關(guān)設(shè)置。

在MobileNetworkSettings類里面,系統(tǒng)使用了Phone這個類的void setPreferredNetworkType(int networkType, Message response);方法來改變首選網(wǎng)絡(luò)類型。

[html] view plain copy
  1. mPhone.setPreferredNetworkType(modemNetworkMode, mHandler  
  2.         .obtainMessage(MyHandler.MESSAGE_SET_PREFERRED_NETWORK_TYPE));  
所以我們使用發(fā)射方式獲取到Phone這個類的對象,然后獲取到setPreferredNetworkType方法:
[java] view plain copy
  1. Object mPhone;  
  2. static Object loadPhoneObject() {  
  3.         try {  
  4.             Class<?> forName = Class.forName("com.android.internal.telephony.PhoneFactory");  
  5.             Method getDefaultPhone = forName.getMethod("getDefaultPhone"new Class[] {});  
  6.             return getDefaultPhone.invoke(nullnew Object[] {});  
  7.         }  
  8.         catch (Exception e) {  
  9.             Log.e(TAG, "Error!", e);  
  10.         }  
  11.         return null;  
  12.     }  
  13.   
  14. mPhone = loadPhoneObject();  
  15. Method setPreferredNetworkType = mPhone.getClass().getMethod("setPreferredNetworkType"new Class[] { int.class, Message.class });  

記住要在Manifest中將使用該方法的Activity或者Server注冊到com.android.phone中,不然無法獲取到Phone對象,因為
[java] view plain copy
  1. "com.android.internal.telephony.PhoneFactory"  
這個類只有在Phone進程下才可以獲取,還要加上權(quán)限:
[java] view plain copy
  1. <uses-permission android:name="android.permisssion.MODIFY_PHONE_STATE"/>  
在IccLockSettings類中,系統(tǒng)使用了tryChangeIccLockState方法:
[java] view plain copy
  1. private void tryChangeIccLockState() {  
  2.         // Try to change icc lock. If it succeeds, toggle the lock state and  
  3.         // reset dialog state. Else inject error message and show dialog again.  
  4.         Message callback = Message.obtain(mHandler, MSG_ENABLE_ICC_PIN_COMPLETE);  
  5.         mPhone.getIccCard().setIccLockEnabled(mToState, mPin, callback);  
  6.         // Disable the setting till the response is received.  
  7.         mPinToggle.setEnabled(false);  
  8.     }  

其中的
[java] view plain copy
  1. mPhone.getIccCard().setIccLockEnabled(mToState, mPin, callback);  
使用了IccCard這個接口的setIccLockEnabled方法來設(shè)置SIM是否鎖定,用上面獲取的Phone對象使用反射方式獲取到IccCard類:
[java] view plain copy
  1. Object loadIccCardObject(){  
  2.         try{  
  3.             Method getIccCard = mPhone.getClass().getMethod("getIccCard" ,new Class[] {});  
  4.             return getIccCard.invoke(mPhone,new Object[] {});  
  5.         }catch (Exception e){  
  6.             Log.e(TAG, "Error!", e);  
  7.         }  
  8.         return null;  
  9.     }  

然后再獲取到setIccLockEnabled方法:
[java] view plain copy
  1. <pre name="code" class="java">Object mIccCard = loadIccCardObject();  
[java] view plain copy
  1. Method setIccLockEnabled = mIccCard.getClass().getMethod("setIccLockEnabled",new Class[] { boolean.class, String.class, Message.class });  

這樣就能使用setIccLockEnabled來設(shè)置SIM是否鎖定了:
[java] view plain copy
  1. public void setIccLockEnabled(boolean isLock,String password){  
  2.         try {  
  3.             setIccLockEnabled.invoke(mIccCard,new Object[] {isLock, password,setHandler.obtainMessage(MESSAGE_CHANGE_LOCK_SIM) });  
  4.         }catch (Exception e){  
  5.             Log.e(TAG, "Error!", e);  
  6.         }  
  7.     }  

PIN的設(shè)置同理:
[java] view plain copy
  1. Method changeIccLockPassword = mIccCard.getClass().getMethod("changeIccLockPassword",new Class[] { String.class, String.class, Message.class });  

[java] view plain copy
  1. public void changeIccLockPassword(String oldPassWord,String newPassword){  
  2.         try {  
  3.             changeIccLockPassword.invoke(mIccCard,new Object[] {oldPassWord, newPassword,setHandler.obtainMessage(MESSAGE_CHANGE_PASSWORD_PIN) });  
  4.         }catch (Exception e){  
  5.             Log.e(TAG, "Error!", e);  
  6.         }  
  7.     }  

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
數(shù)據(jù)業(yè)務(wù)建立流程之DcTracker創(chuàng)建過程(原)
數(shù)據(jù)業(yè)務(wù)建立流程之發(fā)起網(wǎng)絡(luò)連接過程(原)
android mediaPlayer 設(shè)置播放次數(shù)
Android java.io.FileNotFoundException: open failed: EACCES (Permission denied)
Java反射機制的原理及在Android下的簡單應(yīng)用
java編程題:以三種不同方式輸出九九乘法表(java)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服