Android的 - 没有得到电话号码
我试图让使用下面的代码的电话号码,Android的 - 没有得到电话号码
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
phoneImei = tm.getDeviceId();
phoneNo = tm.getLine1Number();
但是,它返回我空值。当我检查设置时,电话号码是未知的。我正在使用星系连结。任何想法如何我可以解决这个问题。?
试试这个:
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.widget.Toast;
public class GetMyPhoneNoActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String number =getMyPhoneNO();
Toast.makeText(getApplicationContext(), "My Phone No is: "
+number, Toast.LENGTH_SHORT).show();
Log.v("Debug", number);
}
private String getMyPhoneNO(){
TelephonyManager mTelephonyMgr;
mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String yourNumber = mTelephonyMgr.getLine1Number();
//return yourNumber;
}
}
您清单:
<uses-permission android:name="android.permission.READ_PHONE_STATE">
</uses-permission>
这会工作得很好。
您需要在您的AndroidManifest.xml文件
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
这里是我的代码添加以下权限:
import java.lang.reflect.Method;
import android.app.NotificationManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.media.AudioManager;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import com.android.internal.telephony.ITelephony;
public class BlockBlackListIncomingNumber extends BroadcastReceiver {
private Context cont;
private Transactions transactions;
private ITelephony itelephony;;
int i = 1;
/* When any incoming calls come to our cellphone number */
@Override
public void onReceive(Context context, Intent intent)
{
transactions = new Transactions(context);
// Create an object of transaction class.
this.cont = context;
// Refer to current object of Context.
Bundle extras = intent.getExtras();
// Getting Bundles in extras.
String iNumber = extras.getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
// Getting Incoming Number by which call comes that’s why we used TelephoyManager.EXTRA_INCOMING_NUMBER.
i编号将来电号码。
尝试使用实施AIDL
这将适用于所有版本的Android?这是SDK的一部分吗? – wojciii
我想是的,我已经在Android 2.2上实现了它。请测试最新版本,并让我们知道您的发现。 – yogeshhkumarr
我不认为你是对的。请参阅http://stackoverflow.com/a/9034931/1525300。 – wojciii
代替电话号码使用的SIM卡序列号,它总是存在,始终是一个有效值ITelephony接口。
telephonyManager.getSimSerialNumber();
SIM序列号在操作员中至少是唯一的。因此,与
telephonyManager.getNetworkOperator();
结合你就会有一个country.This内的用户的唯一标识符与
telephonyManager.getNetworkCountryIso();
结合你就会有一个用户的全局唯一标识符。
希望这会有所帮助。
干杯。
在一些国家使用 代码
TelephonyManager TM =(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE),你不会得到的电话号码; phoneImei = tm.getDeviceId(); phoneNo = tm.getLine1Number();
你将不得不从用户那里得到它的输入。但是,要验证该号码,您需要在清单文件中包含发送SMS和接收SMS权限。
使用发件人和收件人的号码和加密的邮件(您编写/编码的)进行验证,您可以验证用户的电话号码。 Whatsapp这样做。
不能看到任何不同于我的代码..你仍然使用getLine1Number()... –
但它在我的模拟器上正常工作.. –
尝试使用手机而不是模拟器...把SIM放在手机上,并尝试.. –