java - 检查明确的许可?

标签 java android

in my code the permission log will be display but the phone number is not visible in toast how to get simcard number in the toast message with the use of explicit permission

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;

@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());
    }

}

private String getPhone() {
    TelephonyManager phoneMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
    if (ActivityCompat.checkSelfPermission(activity, wantPermission) != PackageManager.PERMISSION_GRANTED) {
        Toast.makeText(this, "my phone no is:-" + phoneMgr,Toast.LENGTH_LONG).show();
    }
    return phoneMgr.getLine1Number();
}

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);
        return result == PackageManager.PERMISSION_GRANTED;
    } else {
        return true;
    }
}
}

请帮帮我
如何在显示 Toast 中获取电话号码?

最佳答案

checkout 写的答案here .

代码中的一些更正

private String getPhone() {
    TelephonyManager phoneMgr = (TelephonyManager) Context.getSystemService(Context.TELEPHONY_SERVICE);
    if (ActivityCompat.checkSelfPermission(activity, wantPermission) != PackageManager.PERMISSION_GRANTED) {
        Toast.makeText(this, "my phone no is:-" + phoneMgr,Toast.LENGTH_LONG).show();
    }
    return phoneMgr.getLine1Number();
}

关于java - 检查明确的许可?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53609421/

相关文章:

java - 使用 RxJava 链两个改造 observables

Android - 可移动/可拖动的 float 操作按钮 (FAB)

Android Kotlin Firebase addOnCompleteListener 显示错误

java - 让 @ExceptionHandler 处理除 AccessDeniedException 之外的所有异常?

java - Slick2D: key 已发布

android - 启动 Daydream 服务时隐藏导航栏?

java - 尝试发送csv文件但权限失败

android - 如何在 Kotlin 中从 Android "strings.xml"访问值

java - 如何将负数表示为整数数组?

java - 请求的纹理尺寸 JavaFX