美文网首页
EasyPermissions android 权限申请

EasyPermissions android 权限申请

作者: 一蓑烟雨_龙哥 | 来源:发表于2020-06-02 13:21 被阅读0次
    android 框架编程之 EasyPermissions

    转载[来自一个用户的文章](https://www.cnblogs.com/renhui/p/10976493.html#_label3

    1.使用EasyPermissions 检查权限;(如果没有权限则进行第二部)
    2.使用EasyPermissions 请求权限;(请求权限后,会出现1.用户给权限;2.用户不给权限,所以需要第三步,请求权限的结果)
    3.EasyPermissions ,相应权限结果;
    4.@AfterPermissionGranted

    还未写完,下次继续

    自己应用程序中的代码

    package feng.obu.ui.login;
    
    import android.app.Activity;
    
    import androidx.annotation.NonNull;
    import androidx.appcompat.app.ActionBar;
    import androidx.lifecycle.Observer;
    import androidx.lifecycle.ViewModelProviders;
    
    import android.content.Intent;
    import android.os.Bundle;
    
    import androidx.annotation.Nullable;
    import androidx.annotation.StringRes;
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.text.Editable;
    import android.text.TextWatcher;
    import android.view.KeyEvent;
    import android.view.View;
    import android.view.inputmethod.EditorInfo;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.ProgressBar;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import java.util.List;
    
    import feng.obu.MainActivity;
    import feng.obu.R;
    import feng.obu.Utils;
    import feng.obu.ui.login.LoginViewModel;
    import feng.obu.ui.login.LoginViewModelFactory;
    import pub.devrel.easypermissions.AppSettingsDialog;
    import pub.devrel.easypermissions.EasyPermissions;
    
    public class LoginActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks {
    
        private LoginViewModel loginViewModel;
        String [] permsList={"android.permission.BLUETOOTH",
                "android.permission.BLUETOOTH_ADMIN",
                "android.permission.INTERNET",
               // "android.permission.ACCESS_LOCATION",
                "android.permission.ACCESS_FINE_LOCATION"};
    
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_login);
    
            Boolean flag=EasyPermissions.hasPermissions(this,permsList);
            if(!flag){
                EasyPermissions.requestPermissions(this,"有以下权限才能正常使用",220,permsList);;
            }
            loginViewModel = ViewModelProviders.of(this, new LoginViewModelFactory())
                    .get(LoginViewModel.class);
    
            final EditText usernameEditText = findViewById(R.id.username);
            final EditText passwordEditText = findViewById(R.id.password);
            final Button loginButton = findViewById(R.id.login);
            final ProgressBar loadingProgressBar = findViewById(R.id.loading);
    
            loginViewModel.getLoginFormState().observe(this, new Observer<LoginFormState>() {
                @Override
                public void onChanged(@Nullable LoginFormState loginFormState) {
                    if (loginFormState == null) {
                        return;
                    }
                    loginButton.setEnabled(loginFormState.isDataValid());
                    if (loginFormState.getUsernameError() != null) {
                        usernameEditText.setError(getString(loginFormState.getUsernameError()));
                    }
                    if (loginFormState.getPasswordError() != null) {
                        passwordEditText.setError(getString(loginFormState.getPasswordError()));
                    }
                }
            });
    
            loginViewModel.getLoginResult().observe(this, new Observer<LoginResult>() {
                @Override
                public void onChanged(@Nullable LoginResult loginResult) {
                    if (loginResult == null) {
                        return;
                    }
                    loadingProgressBar.setVisibility(View.GONE);
                    if (loginResult.getError() != null) {
                        showLoginFailed(loginResult.getError());
                    }
                    if (loginResult.getSuccess() != null) {
                        updateUiWithUser(loginResult.getSuccess());
                    }
                    setResult(Activity.RESULT_OK);
                    startActivity(new Intent(LoginActivity.this, MainActivity.class));
    
    
                    //Complete and destroy login activity once successful
                    finish();
                }
            });
    
            TextWatcher afterTextChangedListener = new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                    // ignore
                }
    
                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {
                    // ignore
                }
    
                @Override
                public void afterTextChanged(Editable s) {
                    loginViewModel.loginDataChanged(usernameEditText.getText().toString(),
                            passwordEditText.getText().toString());
                }
            };
            usernameEditText.addTextChangedListener(afterTextChangedListener);
            passwordEditText.addTextChangedListener(afterTextChangedListener);
            passwordEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
    
                @Override
                public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                    if (actionId == EditorInfo.IME_ACTION_DONE) {
                        loginViewModel.login(usernameEditText.getText().toString(),
                                passwordEditText.getText().toString());
                    }
                    return false;
                }
            });
    
            loginButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
    
                    Boolean flag=EasyPermissions.hasPermissions(LoginActivity.this,permsList);
                    if(!flag){
                        EasyPermissions.requestPermissions(LoginActivity.this,"正常使用需要开启权限哦!",220,permsList);
                        return;
                    }
    
                    if(!Utils.getBluetoothisEnabled(LoginActivity.this)){
                        Utils.opendBluetooth();
                        return;
                    }
    
    
    
                    loadingProgressBar.setVisibility(View.VISIBLE);
                    loginViewModel.login(usernameEditText.getText().toString(),
                            passwordEditText.getText().toString());
                }
            });
    
    
            ActionBar actionBar = getSupportActionBar();
            if(actionBar!=null){
                actionBar.hide();
            }
            if(actionBar!=null){
                actionBar.setIcon(R.drawable.ic_home_index);
                actionBar.setLogo(R.drawable.icon_pwd);
    //            actionBar.setTitle("主标题");
            }
        }
    
    
    
        private void updateUiWithUser(LoggedInUserView model) {
            String welcome = getString(R.string.welcome) + model.getDisplayName();
            // TODO : initiate successful logged in experience
            Toast.makeText(getApplicationContext(), welcome, Toast.LENGTH_LONG).show();
        }
    
        private void showLoginFailed(@StringRes Integer errorString) {
            Toast.makeText(getApplicationContext(), errorString, Toast.LENGTH_SHORT).show();
        }
    
        @Override
        public void onPermissionsGranted(int requestCode, @NonNull List<String> perms) {
    
        }
    
        @Override
        public void onPermissionsDenied(int requestCode, @NonNull List<String> perms) {
    
            if (EasyPermissions.somePermissionPermanentlyDenied(this, perms)) {
                new AppSettingsDialog.Builder(this).build().show();
            }
        }
    
        @Override
        public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
            super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    
             EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
        }
    }
    
    

    相关文章

      网友评论

          本文标题:EasyPermissions android 权限申请

          本文链接:https://www.haomeiwen.com/subject/soruzhtx.html