如何检测和选择用户所在国家?

How to detect and selecting user local country?

我正在使用该库:https://github.com/AlmogBaku/IntlPhoneInput 获取用户 phone 号码。

我想自动检测并select用户所在的国家/地区。

读到:https://github.com/AlmogBaku/IntlPhoneInput#public-methods, 我补充说:android.permission.READ_PHONE_STATE 在我的 AndroidManifest.xml 但无法自动检测和 select 用户所在的国家/地区。

有什么帮助吗?

如果您使用的是 API-level 23+,那么清单中的 android.permission.READ_PHONE_STATE 是不够的,您需要以编程方式请求它,然后这样做

public class MainActivity extends AppCompatActivity {

    private static final int PERMISSION_READ_STATE = 21;
    private IntlPhoneInput mPhoneInputView;

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

        if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE)
                != PackageManager.PERMISSION_GRANTED) {
            // We do not have this permission. Let's ask the user by showingg a dialog
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_PHONE_STATE}, PERMISSION_READ_STATE);
        }

        mPhoneInputView = findViewById(R.id.my_phone_input);

    }

    // Called when the user decides the dialog permission
    @Override
    public void onRequestPermissionsResult(int requestCode,
                                           @NonNull String[] permissions, @NonNull int[] grantResults) {
        if (requestCode == PERMISSION_READ_STATE) {
            if (grantResults.length > 0
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                // permission granted!
                mPhoneInputView.setDefault();

            } else {
                // permission denied
            }
        }
    }

    ...
}