Android 获取手机号码

部分应用需要获取手机的号码,可以采用代码的方式来获取。

代码如下:

public String getNativePhoneNumber() {

    telephonyManager = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);

    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_SMS) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {

        //

        //    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 null;

    }

    nativePhoneNumber = telephonyManager.getLine1Number();

    if(nativePhoneNumber != null && nativePhoneNumber.length() != 0){

        newNativePhoneNumber = nativePhoneNumber.substring(1,nativePhoneNumber.length());

    }

    Log.d(TAG, "getNativePhoneNumber++++++++++++: " + nativePhoneNumber);

    return newNativePhoneNumber;

}


需要在AndroidManifest中设置权限。并在代码中动态获取权限。

动态获取权限使用

rxpermissions2

动态获取

compile 'io.reactivex.rxjava2:rxandroid:2.0.1'

compile 'io.reactivex.rxjava2:rxjava:2.0.5'

compile 'com.tbruyelle.rxpermissions2:rxpermissions:0.9.3@aar'


获取的代码如下:

public void requestPermissions() { RxPermissions rxPermission = new RxPermissions(MainActivity.this); rxPermission .requestEach( Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.READ_PHONE_STATE, Manifest.permission.READ_SMS) .subscribe(new Consumer() {

                @Override

                public void accept(Permission permission) throws Exception {

                    if (permission.granted) {

                        // 用户已经同意该权限

                        getNativePhoneNumber();

                        Log.d(TAG, permission.name + " is granted.");

                    } else if (permission.shouldShowRequestPermissionRationale) {

                        // 用户拒绝了该权限,没有选中『不再询问』(Never ask again),那么下次再次启动时,还会提示请求权限的对话框

                        Log.d(TAG, permission.name + " is denied. More info should be provided.");

                    } else {

                        // 用户拒绝了该权限,并且选中『不再询问』

                        Log.d(TAG, permission.name + " is denied.");

                    }

                }

            });

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容