gpt4 book ai didi

java - 如何在Android中获取simCard号码

转载 作者:行者123 更新时间:2023-11-29 08:27:38 26 4
gpt4 key购买 nike

在我的应用程序中,我想从 sim 卡 中获取电话号码 并显示给用户。
我写了下面的代码,但在模拟器中显示了 sim 卡号,但是一些设备如 Samsung 不显示任何 sim 卡号。

list 代码:

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

Activity 代码:

public class FetchSimActivity extends AppCompatActivity {

TextView fetchSimCardTxt, fetchNumCardTxt;
TelephonyManager tm;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fetch_sim);
fetchSimCardTxt = findViewById(R.id.fetchSimCardTxt);
fetchNumCardTxt = findViewById(R.id.fetchNumCardTxt);
tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return;
}
String simID = tm.getSimSerialNumber();
if (simID != null) {
fetchSimCardTxt.setText("SIM ID : + " + simID);
}

String telNumber = tm.getLine1Number();
if (telNumber != null) {
fetchNumCardTxt.setText("SIM NUM : + " +telNumber);
}
}
}

如何从android中的所有设备获取sim卡号码?

最佳答案

在AndroidManifest.xml中添加权限

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

然后使用这段代码

import android.Manifest;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Context;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.widget.Toast;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {
String TAG = "PhoneActivityTAG";
Activity activity = MainActivity.this;
String wantPermission = Manifest.permission.READ_PHONE_STATE;
private static final int PERMISSION_REQUEST_CODE = 1;
ArrayList<String> _mst=new ArrayList<>();

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

if (!checkPermission(wantPermission)) {
requestPermission(wantPermission);
} else {

Log.d(TAG, "Phone number: " + getPhone());
_mst = getPhone();

for (String op: _mst) {
Log.i("Device Information", String.valueOf(op));
}
}
}

@TargetApi(Build.VERSION_CODES.O)
private ArrayList<String> getPhone() {
TelephonyManager phoneMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
if (ActivityCompat.checkSelfPermission(activity, wantPermission) != PackageManager.PERMISSION_GRANTED) {
return null;
}
ArrayList<String> _lst =new ArrayList<>();
_lst.add(String.valueOf(phoneMgr.getCallState()));
_lst.add("IMEI NUMBER :-"+phoneMgr.getImei());
_lst.add("MOBILE NUMBER :-"+phoneMgr.getLine1Number());
_lst.add("SERIAL NUMBER :-"+phoneMgr.getSimSerialNumber());
_lst.add("SIM OPERATOR NAME :-"+phoneMgr.getSimOperatorName());
_lst.add("MEI NUMBER :-"+phoneMgr.getMeid());
_lst.add("SIM STATE :-"+String.valueOf(phoneMgr.getSimState()));
_lst.add("COUNTRY ISO :-"+phoneMgr.getSimCountryIso());
return _lst;
}

private void requestPermission(String permission){
if (ActivityCompat.shouldShowRequestPermissionRationale(activity, permission)){
Toast.makeText(activity, "Phone state permission allows us to get phone number. Please allow it for additional functionality.", Toast.LENGTH_LONG).show();
}
ActivityCompat.requestPermissions(activity, new String[]{permission},PERMISSION_REQUEST_CODE);
}

@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case PERMISSION_REQUEST_CODE:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Log.d(TAG, "Phone number: " + getPhone());
} else {
Toast.makeText(activity,"Permission Denied. We can't get phone number.", Toast.LENGTH_LONG).show();
}
break;
}
}

private boolean checkPermission(String permission){
if (Build.VERSION.SDK_INT >= 23) {
int result = ContextCompat.checkSelfPermission(activity, permission);
if (result == PackageManager.PERMISSION_GRANTED){
return true;
} else {
return false;
}
} else {
return true;
}
}
}

关于java - 如何在Android中获取simCard号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51259083/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com