最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android 手機(jī)獲取手機(jī)號(hào)實(shí)現(xiàn)方法

 更新時(shí)間:2016年09月07日 14:36:21   作者:安卓吧  
本文主要介紹Android 獲取手機(jī)號(hào)的實(shí)現(xiàn)方法,這里提供了實(shí)現(xiàn)方法,和具體操作流程,并符實(shí)現(xiàn)代碼,有需要的小伙伴可以參考下

最近做到一個(gè)項(xiàng)目,需要獲取手機(jī)號(hào)。項(xiàng)目中使用的手機(jī)卡為電信卡,那么就以此為例吧。

網(wǎng)上不符合需求的方法

Google了一下,網(wǎng)上的做法如下:

//獲取手機(jī)號(hào)碼 
TelephonyManager tm = (TelephonyManager)this.getSystemService(Context.TELEPHONY_SERVICE); 
 String deviceid = tm.getDeviceId();//獲取智能設(shè)備唯一編號(hào) 
 String te1 = tm.getLine1Number();//獲取本機(jī)號(hào)碼 
 String imei = tm.getSimSerialNumber();//獲得SIM卡的序號(hào) 
 String imsi = tm.getSubscriberId();//得到用戶Id 

添加權(quán)限:

<uses-permissionandroid:nameuses-permissionandroid:name="android.permission.READ_PHONE_STATE"/ 

以上做法有可能獲取sim卡號(hào),但是現(xiàn)在最起碼在電信手機(jī)卡上獲取不到。

原因好像、似乎是:

手機(jī)號(hào)碼不是所有的都能獲取。只是有一部分可以拿到。這個(gè)是由于移動(dòng)運(yùn)營(yíng)商沒有把手機(jī)號(hào)碼的數(shù)據(jù)寫入到sim卡中.SIM卡只有唯一的編號(hào),供網(wǎng)絡(luò)與設(shè)備識(shí)別那就是IMSI號(hào)碼,手機(jī)的信號(hào)也可以說是通過這個(gè)號(hào)碼在網(wǎng)絡(luò)中傳遞的,并不是手機(jī)號(hào)碼。試想,你的SIM卡丟失后,補(bǔ)辦一張新的會(huì)換號(hào)碼嗎?是不會(huì)的.就是因?yàn)樵谀愕氖謾C(jī)號(hào)碼對(duì)應(yīng)的IMSI號(hào) 在移動(dòng)運(yùn)營(yíng)商中被修改成新SIM卡的IMSI號(hào)碼。

那么我們?cè)趺唇鉀Q這個(gè)問題呢?

不好實(shí)現(xiàn)?一個(gè)原因搞定你:項(xiàng)目需要??!

查了下手機(jī)的基本信息那一欄里,也沒有找到手機(jī)號(hào),看來手機(jī)中似乎沒有存儲(chǔ)這手機(jī)號(hào)。那么我就只有使用變通的手法來獲取手機(jī)號(hào)了。

就是給10001發(fā)送一個(gè)短信,找了一下,發(fā)個(gè)501查詢套餐情況就可以。10001會(huì)給你個(gè)反饋信息,其中包含手機(jī)號(hào)碼

那么我們發(fā)送短信,然后監(jiān)聽得到此短信,然后分解字符串那么就可以得到手機(jī)號(hào)了。

如果是聯(lián)通或者移動(dòng)應(yīng)該也是有類似的情況。何況給他們發(fā)短信應(yīng)該不會(huì)收費(fèi)。。。O(∩_∩)O~

程序如何實(shí)現(xiàn)?

1.監(jiān)聽短信類

package com.example.smsmanager; 
 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.telephony.SmsMessage; 
 
public class SMS_Receiver extends BroadcastReceiver { 
 
 final String GetNumberAddress="10001"; 
 @Override 
 public void onReceive(Context context, Intent intent) { 
  // TODO Auto-generated method stub 
  if(intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")){ 
    
   Object[] pdus=(Object[])intent.getExtras().get("pdus"); 
   //不知道為什么明明只有一條消息,傳過來的卻是數(shù)組,也許是為了處理同時(shí)同分同秒同毫秒收到多條短信 
   //但這個(gè)概率有點(diǎn)小 
   SmsMessage[] message=new SmsMessage[pdus.length]; 
   StringBuilder sb=new StringBuilder(); 
   System.out.println("pdus長(zhǎng)度"+pdus.length); 
   String address=""; 
   for(int i=0;i<pdus.length;i++){ 
    //雖然是循環(huán),其實(shí)pdus長(zhǎng)度一般都是1 
    message[i]=SmsMessage.createFromPdu((byte[])pdus[i]); 
    sb.append("接收到短信來自:\n"); 
    address=message[i].getDisplayOriginatingAddress(); 
    sb.append(address+"\n"); 
    sb.append("內(nèi)容:"+message[i].getDisplayMessageBody()); 
   } 
   System.out.println(sb.toString()); 
   if(SMSCore.PhoneNumber==""&&address.equals(GetNumberAddress)){ 
    SMSCore.PhoneNumber=SMSCore.GetPhoneNumberFromSMSText(sb.toString()); 
    MessageTools.ShowDialog(context, address); 
   } 
   MessageTools.ShowDialog(context, sb.toString().trim()); 
   MessageTools.ShowDialog(context, SMSCore.PhoneNumber); 
  } 
 } 
 
} 

2.短信操作類

package com.example.smsmanager; 
 
import java.sql.Date; 
import java.util.ArrayList; 
import java.util.List; 
import java.util.regex.Matcher; 
import java.util.regex.Pattern; 
 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.content.BroadcastReceiver; 
import android.app.Activity; 
import android.app.PendingIntent; 
import android.content.Context; 
import android.content.Intent; 
import android.content.IntentFilter; 
import android.telephony.SmsManager; 
import android.util.Log; 
import android.content.ContextWrapper; 
 
public class SMSCore { 
  
  public static String PhoneNumber=""; 
  //==============Get Phone Number ============================== 
   
  //get the phone number from sms 
  public static String GetPhoneNumberFromSMSText(String sms){ 
    
   List<String> list=GetNumberInString(sms); 
   for(String str:list){ 
    if(str.length()==11) 
     return str; 
   } 
   return ""; 
  } 
  public static List<String> GetNumberInString(String str){ 
   List<String> list=new ArrayList<String>(); 
    String regex = "\\d*"; 
      Pattern p = Pattern.compile(regex); 
 
      Matcher m = p.matcher(str); 
 
      while (m.find()) { 
      if (!"".equals(m.group())) 
       list.add(m.group()); 
       } 
      return list; 
  } 
   
  //=========================================================== 
  // 
  // 
  //=============Send SMS================ 
  public void SendSMS(String number,String text,Context context){ 
    
   PendingIntent pi = PendingIntent.getActivity(context, 0, 
     new Intent(context, context.getClass()), 0); 
   SmsManager sms = SmsManager.getDefault(); 
   sms.sendTextMessage(number, null, text, pi, null); 
 
  } 
   
  public void SendSMS2(String number,String text,Context context){ 
   String SENT = "sms_sent"; 
   String DELIVERED = "sms_delivered"; 
   PendingIntent sentPI = PendingIntent.getActivity(context, 0, new Intent(SENT), 0); 
   PendingIntent deliveredPI = PendingIntent.getActivity(context, 0, new Intent(DELIVERED), 0); 
//   
//   // 
//   registerReceiver(new BroadcastReceiver(){ 
//     @Override 
//     public void onReceive(Context context, Intent intent){ 
//      switch(getResultCode()) 
//      { 
//       case Activity.RESULT_OK: 
//        Log.i("====>", "RESULT_OK"); 
//        System.out.println("RESULT_OK"); 
//        
//        break; 
//       case Activity.RESULT_CANCELED: 
//        Log.i("=====>", "RESULT_CANCELED"); 
//        break; 
//      } 
//     } 
//    }, new IntentFilter(DELIVERED)); 
//   // 
    
   SmsManager smsm = SmsManager.getDefault(); 
   smsm.sendTextMessage(number, null, text, sentPI, deliveredPI); 
  } 
   
  //===================================== 
} 
 

3.彈出框操作類

package com.example.smsmanager; 
 
import android.app.AlertDialog; 
import android.app.AlertDialog.Builder; 
import android.content.Context; 
import android.content.DialogInterface; 
import android.content.DialogInterface.OnClickListener; 
 
public class MessageTools { 
 public static void ShowDialog(Context context, String text){ 
  AlertDialog.Builder builder = new Builder(context); 
   builder.setMessage(text); 
 
   builder.setTitle("提示"); 
 
   builder.setPositiveButton("確認(rèn)", new OnClickListener() { 
 
   @Override 
   public void onClick(DialogInterface dialog, int which) { 
   dialog.dismiss(); 
 
   dialog.dismiss(); 
   } 
   }); 
 
   builder.setNegativeButton("取消", new OnClickListener() { 
 
   @Override 
   public void onClick(DialogInterface dialog, int which) { 
   dialog.dismiss(); 
   } 
   }); 
 
   builder.create().show(); 
 } 
} 

4.調(diào)用如下:

// 
 private static final String ACTION_SMS_SEND = "lab.sodino.sms.send"; 
 private static final String ACTION_SMS_DELIVERY = "lab.sodino.sms.delivery"; 
 private static final String ACTION_SMS_RECEIVER = "android.provider.Telephony.SMS_RECEIVED"; 
 

// 注冊(cè)接收下行receiver 
  SMS_Receiver smsReceiver= new SMS_Receiver(); 
  IntentFilter receiverFilter = new IntentFilter(ACTION_SMS_RECEIVER); 
  registerReceiver(smsReceiver, receiverFilter); 
//發(fā)送短信 
SMSCore smscore=new SMSCore(); 
smscore.SendSMS2("10001", "501", context); 

 運(yùn)行結(jié)果:

我們可以得到了想要的手機(jī)號(hào)碼了!

以上就是Android 獲取手機(jī)號(hào)的實(shí)現(xiàn)代碼,希望能幫助有需要的朋友,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • Android 實(shí)現(xiàn)簽到足跡功能

    Android 實(shí)現(xiàn)簽到足跡功能

    這篇文章主要介紹了Android 實(shí)現(xiàn)簽到足跡功能的示例,幫助大家更好的理解和學(xué)習(xí)使用Android,感興趣的朋友可以了解下
    2021-04-04
  • 詳解Android Gradle插件3.0挖坑日記

    詳解Android Gradle插件3.0挖坑日記

    這篇文章主要介紹了詳解Android Gradle插件3.0挖坑日記,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-11-11
  • Android開發(fā)基礎(chǔ)使用ProgressBar加載進(jìn)度條示例

    Android開發(fā)基礎(chǔ)使用ProgressBar加載進(jìn)度條示例

    這篇文章主要介紹了安卓開發(fā)基礎(chǔ)使用ProgressBar加載進(jìn)度條示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • Android自定義字母導(dǎo)航欄

    Android自定義字母導(dǎo)航欄

    這篇文章主要為大家詳細(xì)介紹了Android自定義字母導(dǎo)航欄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • Android實(shí)現(xiàn)View滑動(dòng)效果的6種方法

    Android實(shí)現(xiàn)View滑動(dòng)效果的6種方法

    這篇文章主要介紹了Android實(shí)現(xiàn)View滑動(dòng)的6種方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • Android擴(kuò)大View點(diǎn)擊區(qū)域方案示例

    Android擴(kuò)大View點(diǎn)擊區(qū)域方案示例

    這篇文章主要為大家介紹了Android擴(kuò)大View點(diǎn)擊區(qū)域方案示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • 淺析Android文件存儲(chǔ)

    淺析Android文件存儲(chǔ)

    本文詳細(xì)介紹了android的外部存儲(chǔ)和私有存儲(chǔ)。大家在有保存文件的需求的時(shí)候,根據(jù)自己的需要,選擇到底是存在哪里比較合適。內(nèi)部存儲(chǔ)相對(duì)較小,不介意把一些大文件存在其中。應(yīng)該存在外部存儲(chǔ)會(huì)更好。對(duì)于可以給其他文件訪問的,可以存在外部存儲(chǔ)的公有文件里面
    2021-06-06
  • Android自定義DataTimePicker實(shí)例代碼(日期選擇器)

    Android自定義DataTimePicker實(shí)例代碼(日期選擇器)

    本篇文章主要介紹了Android自定義DataTimePicker實(shí)例代碼(日期選擇器),非常具有實(shí)用價(jià)值,需要的朋友可以參考下。
    2017-01-01
  • android判斷點(diǎn)擊位置是否在扇形區(qū)域內(nèi)

    android判斷點(diǎn)擊位置是否在扇形區(qū)域內(nèi)

    這篇文章主要為大家詳細(xì)介紹了android判斷點(diǎn)擊位置是否在扇形區(qū)域內(nèi),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Android修改源碼解決Alertdialog觸摸對(duì)話框邊緣消失的問題

    Android修改源碼解決Alertdialog觸摸對(duì)話框邊緣消失的問題

    在開發(fā)的時(shí)候遇到一個(gè)問題,就是一觸摸對(duì)話框邊緣外部,對(duì)話框會(huì)自動(dòng)消失。這個(gè)問題很糾結(jié)啊,查找了一下發(fā)現(xiàn)從Android 4.0開始,AlertDialog有了變化,就是在觸摸對(duì)話框邊緣外部,對(duì)話框會(huì)自動(dòng)消失,查了源碼,找到解決辦法如下
    2013-11-11

最新評(píng)論

色达县| 翁牛特旗| 巴青县| 澄迈县| 仁布县| 江源县| 灯塔市| 准格尔旗| 黄陵县| 陕西省| 昌平区| 观塘区| 夏河县| 揭东县| 丹棱县| 顺昌县| 东乌珠穆沁旗| 济宁市| 黄浦区| 类乌齐县| 阳西县| 霍林郭勒市| 江达县| 大悟县| 汨罗市| 绍兴市| 潜山县| 葫芦岛市| 梓潼县| 龙海市| 盈江县| 北安市| 万源市| 叶城县| 瑞安市| 宁南县| 遵化市| 胶州市| 大埔县| 达州市| 南华县|