Android Marshmallow에서 디렉토리 생성 문제
Android 5.0에서는 기본 앱을 사용하여 디렉토리를 생성하는 것이 잘 작동합니다. 하지만 Android 6.0(Marshmallow)에서는 작동할 때도 있고 작동하지 않을 때도 있습니다. 다음은 새 디렉터리를 만드는 방법에 대한 코드입니다. 디렉토리는 비디오 및 이미지 파일을 저장하는 데 사용됩니다.
<code class="java">public static void createApplicationFolder() { File f = new File(Environment.getExternalStorageDirectory(), File.separator + Config.VIDEO_COMPRESSOR_APPLICATION_DIR_NAME); f.mkdirs(); f = new File(Environment.getExternalStorageDirectory(), File.separator + Config.VIDEO_COMPRESSOR_APPLICATION_DIR_NAME + Config.VIDEO_COMPRESSOR_COMPRESSED_VIDEOS_DIR); f.mkdirs(); f = new File(Environment.getExternalStorageDirectory(), File.separator + Config.VIDEO_COMPRESSOR_APPLICATION_DIR_NAME + Config.VIDEO_COMPRESSOR_TEMP_DIR); f.mkdirs(); }</code>
해결책:
이 문제를 해결하려면 매니페스트 파일에 이 권한을 추가해야 합니다.
<code class="xml"><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /></code>
또한 애플리케이션이 처음 실행될 때 런타임 권한이 요청됩니다. 수정된 코드는 다음과 같습니다.
<code class="java">public class MyDevIDS extends AppCompatActivity { private static final int REQUEST_RUNTIME_PERMISSION = 123; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (CheckPermission(MyDevIDS.this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) { // 具有权限,继续执行 createApplicationFolder(); } else { // 没有权限,请求运行时权限 RequestPermission(MyDevIDS.this, Manifest.permission.WRITE_EXTERNAL_STORAGE, REQUEST_RUNTIME_PERMISSION); } } @Override public void onRequestPermissionsResult(int permsRequestCode, String[] permissions, int[] grantResults) { switch (permsRequestCode) { case REQUEST_RUNTIME_PERMISSION: { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { // 具有权限,继续执行 createApplicationFolder(); } else { // 没有权限,显示吐司 } return; } } } public void RequestPermission(Activity thisActivity, String Permission, int Code) { if (ContextCompat.checkSelfPermission(thisActivity, Permission) != PackageManager.PERMISSION_GRANTED) { if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity, Permission)) { } else { ActivityCompat.requestPermissions(thisActivity, new String[]{Permission}, Code); } } } public boolean CheckPermission(Context context, String Permission) { if (ContextCompat.checkSelfPermission(context, Permission) == PackageManager.PERMISSION_GRANTED) { return true; } else { return false; } } }</code>
이 코드를 추가한 후 애플리케이션을 처음 실행할 때 디렉터리 생성 권한이 항상 요청됩니다.
위 내용은 Android Marshmallow에서 디렉토리를 생성할 때 어떤 문제가 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!