>source

cordova 를 통해 안드로이드 애플리케이션을 개발했습니다  webview 내에서 실행됩니다. 앱에서 persistent storage 를 사용하도록하려면 어떻게해야합니까  크롬에서? 그것은 단지 temporary storage 를 소비 . persistent storage 를 사용해야하는 이유  더 많은 공간을 요청할 수 있다는 것입니다. temporary storage 를 사용하면  최대 한도를 초과하면 임시 저장소에서 데이터베이스의 오래된 데이터를 제거합니다.

크롬 콘솔에서 아래 코드를 실행하면 we are using 0 of 0 bytes 가 나타납니다.  영구 저장소에 사용할 수있는 공간이 0이라는 의미입니다.

navigator.webkitPersistentStorage.queryUsageAndQuota (
    function(usedBytes, grantedBytes) {
        console.log('we are using ', usedBytes, ' of ', grantedBytes, 'bytes');
    },
    function(e) { console.log('Error', e);  }
);

그런 다음 더 많은 저장 공간을 요청하기 위해 아래 코드를 실행합니다 :

navigator.webkitPersistentStorage.requestQuota (
    100 * 1024 * 1024, function(grantedBytes) {
        window.requestFileSystem(PERSISTENT, grantedBytes, (d) => console.log(d), e => console.error(e));
    }, function(e) { console.log('Error', e); }
);

그 후 아무 일도 일어나지 않으며 여전히 사용할 수있는 저장 공간이 0입니다. webview에서 영구 저장소를 사용하는 방법이 궁금합니다. 이에 대한 권한을 지정해야합니까?

내 앱의 권한은 다음과 같습니다.

<uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.GET_TASKS" />
    <uses-permission android:name="android.permission.NFC" />
    <uses-permission android:name="android.permission.INTERNET" />

다른 질문 Android 웹뷰 및 localStorage 를 확인했지만 내 질문과는 다릅니다. 내 웹뷰에 영구 저장 권한을 부여하도록 요청했지만 해당 질문에 persistent storage 사용 방법이 설명되어 있지 않습니다  대신 temporary storage 를 사용합니다  이것은 webview의 기본 저장소입니다.

setDatabaseEnabled(true) 를 설정했습니다  Java 코드에서는 persistent storage 를 사용하지 않습니다. . 대신, temporary storage 를 사용합니다 .


  • 답변 # 1

    setDatabaseEnabled ()는 여전히 사용 가능한 유일한 방법 인 것 같습니다 :

    와이즈 비즈 와이즈 비즈 .

    더 이상 데이터베이스의 위치를 ​​변경할 수없는 경우에도;같이 setDataBasePath ()는 다음을 읽습니다.

    와이즈 비즈

    Sets whether the database storage API is enabled. The default value is 사용  데이터를 유지하기위한 가능한 해결 방법 일 수 있습니다. 예를 들어.

    Cordova 설명서에는 몇 가지 가능한 옵션이 비교되어 있습니다.

    false

관련 자료

  • 이전 php - 기존 URL의 일부를 가져 와서 HTML 코드에서 사용하는 방법은 무엇입니까?
  • 다음 javascript - svg 사각형을 표시하는 데 문제가 있습니다