권한 부분만 바꿔보세요
public class MainActivity extends AppCompatActivity {
Button button;
EditText editText;
File file_dir;
File file_write;
String St_File_name;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = findViewById(R.id.button);
editText = findViewById(R.id.editText);
requestPermissions(); //=============================권한 관련 복사하기
}
public void onClick(View v) throws Exception {
St_File_name = editText.getText().toString();
file_dir = Environment.getExternalStorageDirectory();
file_write = new File(file_dir, St_File_name + ".txt");
if (!file_write.exists()) {
file_write.createNewFile();
}
}
int PERMISSIONS_REQUEST_RESULT;
//권한승인확인
private void requestPermissions() {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
//권한승인이 안됐으면
if(ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
//onRequestPermissionsResult() 자동 실행되서 승인여부 확인
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE}, PERMISSIONS_REQUEST_RESULT);
return;
}
}
}
//requestPermissions() 실행 후 자동으로 실행된다
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if(requestCode == PERMISSIONS_REQUEST_RESULT) {
if(grantResults.length>0 && grantResults[0]== PackageManager.PERMISSION_GRANTED){
Toast.makeText(getApplicationContext(), "저장공간 쓰기권한 승인함", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(getApplicationContext(), "저장공간 쓰기권한 거부함", Toast.LENGTH_SHORT).show();
}
}
}
}
//기본적으로 매니패스트에 권한등록을 해야하고 없을시 자동으로 쓰기권한승인이 안된것으르 처리된다.