Android 应用 - Gancm 主页:使用导航栏和存储权限
package com.hsjdow.gancm;/n/nimport android.Manifest;/nimport android.content.DialogInterface;/nimport android.content.pm.PackageManager;/nimport android.os.Build;/nimport android.os.Bundle;/nimport android.view.View;/nimport android.widget.EditText;/nimport android.widget.Toast;/n/nimport com.google.android.material.snackbar.Snackbar;/nimport com.google.android.material.navigation.NavigationView;/n/nimport androidx.annotation.NonNull;/nimport androidx.annotation.Nullable;/nimport androidx.appcompat.app.AlertDialog;/nimport androidx.appcompat.app.AppCompatActivity;/nimport androidx.core.app.ActivityCompat;/nimport androidx.core.content.ContextCompat;/nimport androidx.drawerlayout.widget.DrawerLayout;/nimport androidx.navigation.NavController;/nimport androidx.navigation.Navigation;/nimport androidx.navigation.ui.AppBarConfiguration;/nimport androidx.navigation.ui.NavigationUI;/n/nimport com.hsjdow.gancm.databinding.ActivityMainBinding;/n/npublic class MainActivity extends AppCompatActivity {/n/n private static final int PERMISSION_REQUEST_CODE = 123;/n private AppBarConfiguration mAppBarConfiguration;/n private ActivityMainBinding binding;/n/n @Override/n protected void onCreate(Bundle savedInstanceState) {/n super.onCreate(savedInstanceState);/n/n binding = ActivityMainBinding.inflate(getLayoutInflater());/n setContentView(binding.getRoot());/n/n setSupportActionBar(binding.appBarMain.toolbar);/n binding.appBarMain.fab.setOnClickListener(new View.OnClickListener() {/n @Override/n public void onClick(View view) {/n Snackbar.make(view, '不知加什么.ing', Snackbar.LENGTH_LONG)/n .setAction('Action', null).show();/n }/n });/n/n DrawerLayout drawer = binding.drawerLayout;/n NavigationView navigationView = binding.navView;/n/n // Passing each menu ID as a set of Ids because each/n // menu should be considered as top level destinations./n mAppBarConfiguration = new AppBarConfiguration.Builder(/n R.id.nav_home, R.id.nav_gallery, R.id.nav_slideshow)/n .setOpenableLayout(drawer)/n .build();/n/n NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_main);/n NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);/n NavigationUI.setupWithNavController(navigationView, navController);/n/n // Check storage permission/n if (!checkStoragePermission()) {/n requestStoragePermission();/n }/n }/n/n // Check if storage permission is granted/n private boolean checkStoragePermission() {/n if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {/n int result = ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE);/n return result == PackageManager.PERMISSION_GRANTED;/n } else {/n return true;/n }/n }/n/n // Request storage permission/n private void requestStoragePermission() {/n if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {/n new AlertDialog.Builder(this)/n .setTitle('权限申请')/n .setMessage('该软件需要使用存储权限来存放下载文件')/n .setPositiveButton('同意', new DialogInterface.OnClickListener() {/n @Override/n public void onClick(DialogInterface dialog, int which) {/n ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, PERMISSION_REQUEST_CODE);/n }/n })/n .setNegativeButton('拒绝', new DialogInterface.OnClickListener() {/n @Override/n public void onClick(DialogInterface dialog, int which) {/n dialog.dismiss();/n }/n })/n .create()/n .show();/n } else {/n ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, PERMISSION_REQUEST_CODE);/n }/n }/n/n // Handle permission request result/n @Override/n public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {/n super.onRequestPermissionsResult(requestCode, permissions, grantResults);/n if (requestCode == PERMISSION_REQUEST_CODE) {/n if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {/n // Permission granted/n Toast.makeText(this, '已获得存储权限', Toast.LENGTH_SHORT).show();/n } else {/n // Permission denied/n Toast.makeText(this, '未获得存储权限', Toast.LENGTH_SHORT).show();/n }/n }/n }/n/n @Override/n public boolean onCreateOptionsMenu(Menu menu) {/n // Inflate the menu; this adds items to the action bar if it is present./n getMenuInflater().inflate(R.menu.main, menu);/n return true;/n }/n/n @Override/n public boolean onSupportNavigateUp() {/n NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_main);/n return NavigationUI.navigateUp(navController, mAppBarConfiguration)/n || super.onSupportNavigateUp();/n }/n/n public void dow_imgone(View view) {/n EditText editText = findViewById(R.id.edit_text);/n String inputText = editText.getText().toString();/n Snackbar.make(view, '输入框内容: ' + inputText, Snackbar.LENGTH_LONG)/n .setAction('Action', null).show();/n }/
原文地址: http://www.cveoy.top/t/topic/iBOq 著作权归作者所有。请勿转载和采集!