>Java >java지도 시간 >Android Marshmallow에서 디렉토리를 생성할 때 어떤 문제가 있나요?

Android Marshmallow에서 디렉토리를 생성할 때 어떤 문제가 있나요?

DDD
DDD원래의
2024-10-24 03:22:46548검색

What is the issue with creating a directory in Android Marshmallow?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.