Androidの携帯電話番号の取得方法
8552 ワード
最近一つのプロジェクトをするには、携帯番号を取得する必要があります。プロジェクトで使う携帯カードはテレコムカードです。これを例にしましょう。
ネット上ではニーズに合わない方法
Googleになりました。インターネットのやり方は以下の通りです。
<uss-permissionadroid:nameuses-permissionandroid:name=“android.permission.READ_”PHONE_STATE"/
以上の方法はsimカードの番号を取得する可能性がありますが、今は少なくともテレコムの携帯電話カードでは入手できません。
その理由は、
携帯電話の番号はすべて取得できるわけではない。一部しか取れません。これは携帯電話機の番号のデータをSIMカードに書き込んでいないためです。SIMカードは唯一の番号しかなく、ネットワークとデバイスの識別にはIMSI番号です。携帯電話の信号はこの番号を通じてネットワークで伝達されるものとも言えます。携帯電話番号ではありません。あなたのSIMカードをなくしたら、新しいのを再発行して番号を変えますか?そうではないです。あなたの携帯電話番号に対応するIMSI号がモバイル事業者の中で新しいSIMカードのIMSI番号に変更されたからです。
この問題はどう解決しますか?
実現しにくいですか?一つの原因はあなたを解決します。プロジェクトが必要です。
携帯の基本情報を調べた欄にも携帯番号が見つからなかったので、携帯にはこの携帯番号が保存されていないようです。じゃ、私は変な方法で携帯番号を取得するしかないです。
10001にメールを送ります。探してみます。501を送ってコースの状況を調べてください。10001はあなたにフィードバック情報をあげます。その中に携帯番号が含まれています。
私たちはメールを送り、このメッセージを傍受して文字列を分解すれば携帯番号を得ることができます。
聯通や移動なら似たようなことがあるはずです。まして彼らにメールを送るのは有料ではないはずです。O(∩д∩)O~
プログラムはどうやって実現しますか?
1.メールの傍受
私たちは欲しい携帯の番号を手に入れることができます。
以上はAndroidが携帯番号の実現コードを取得しました。必要な友達を助けたいです。ありがとうございます。
ネット上ではニーズに合わない方法
Googleになりました。インターネットのやり方は以下の通りです。
//
TelephonyManager tm = (TelephonyManager)this.getSystemService(Context.TELEPHONY_SERVICE);
String deviceid = tm.getDeviceId();//
String te1 = tm.getLine1Number();//
String imei = tm.getSimSerialNumber();// SIM
String imsi = tm.getSubscriberId();// Id
権限を追加:<uss-permissionadroid:nameuses-permissionandroid:name=“android.permission.READ_”PHONE_STATE"/
以上の方法はsimカードの番号を取得する可能性がありますが、今は少なくともテレコムの携帯電話カードでは入手できません。
その理由は、
携帯電話の番号はすべて取得できるわけではない。一部しか取れません。これは携帯電話機の番号のデータをSIMカードに書き込んでいないためです。SIMカードは唯一の番号しかなく、ネットワークとデバイスの識別にはIMSI番号です。携帯電話の信号はこの番号を通じてネットワークで伝達されるものとも言えます。携帯電話番号ではありません。あなたのSIMカードをなくしたら、新しいのを再発行して番号を変えますか?そうではないです。あなたの携帯電話番号に対応するIMSI号がモバイル事業者の中で新しいSIMカードのIMSI番号に変更されたからです。
この問題はどう解決しますか?
実現しにくいですか?一つの原因はあなたを解決します。プロジェクトが必要です。
携帯の基本情報を調べた欄にも携帯番号が見つからなかったので、携帯にはこの携帯番号が保存されていないようです。じゃ、私は変な方法で携帯番号を取得するしかないです。
10001にメールを送ります。探してみます。501を送ってコースの状況を調べてください。10001はあなたにフィードバック情報をあげます。その中に携帯番号が含まれています。
私たちはメールを送り、このメッセージを傍受して文字列を分解すれば携帯番号を得ることができます。
聯通や移動なら似たようなことがあるはずです。まして彼らにメールを送るのは有料ではないはずです。O(∩д∩)O~
プログラムはどうやって実現しますか?
1.メールの傍受
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");
// , ,
//
SmsMessage[] message=new SmsMessage[pdus.length];
StringBuilder sb=new StringBuilder();
System.out.println("pdus "+pdus.length);
String address="";
for(int i=0;i<pdus.length;i++){
// , pdus 1
message[i]=SmsMessage.createFromPdu((byte[])pdus[i]);
sb.append(" :
");
address=message[i].getDisplayOriginatingAddress();
sb.append(address+"
");
sb.append(" :"+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(" ", 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.以下の呼び出し:
//
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";
// receiver
SMS_Receiver smsReceiver= new SMS_Receiver();
IntentFilter receiverFilter = new IntentFilter(ACTION_SMS_RECEIVER);
registerReceiver(smsReceiver, receiverFilter);
//
SMSCore smscore=new SMSCore();
smscore.SendSMS2("10001", "501", context);
実行結果:私たちは欲しい携帯の番号を手に入れることができます。
以上はAndroidが携帯番号の実現コードを取得しました。必要な友達を助けたいです。ありがとうございます。