os.Create и os.Open не работают с gomobile и реагируют на родные

package component

import (
    "encoding/json"
    "io/ioutil"
    "os"
)


type LastComponent struct {
    Name string
}

const fname = "componentfiles"


func Persist(comp string) string {
    lcomp := LastComponent{Name: comp}
    b, err := json.Marshal(lcomp)
    if err != nil {
        return "err-MARSHAL"
    }
    file, err := os.Create(fname)
    if err != nil {
        return "err-CREATE-FILE"
    }
    defer file.Close()
    _, err = file.Write(b)
    if err != nil {
        return "err-FILE-WRITE-PROB"
    }
    return ""
}

func Component() string {
    f, err := os.Open(fname)
    if err != nil {
        return "err-FILE-NOT-OPEN"
    }
    defer f.Close()
    b, err := ioutil.ReadAll(f)
    if err != nil {
        return ""
    }
    var v LastComponent
    json.Unmarshal(b, v)
    return v.Name
}


}

Приведенный выше код работает хорошо, как и сторона кода javascript. Я продолжаю получать err-CREATE-FILE внутри моего JavaScript Так os.Create а также os.Open не работают, как ожидалось.

Хотя это внутреннее хранилище, разрешения не требуются, но я также включил разрешения в файле манифеста, но безрезультатно.

Что может быть правильным способом Open а также Create файлы в Android с помощью Gomobile при использовании вдоль стороны React Native?

Обновить:

В adb logcatЯ продолжаю получать это повсюду

E/Vold ( 276): Failed to find mounted volume for /storage/sdcard1/Android/data/com.gotest/cache/

1 ответ

Так что вы должны иметь некоторый успех, если вы передадите это как параметр - у меня работает что-то вроде следующего:

идти:

func Component(folderPath string) string {
    f, err := os.Open(path.Join(folderPath, fname)) 
    ...

Джава:

Component.Component(getApplicationContext().getFilesDir().getAbsolutePath())

В качестве альтернативы, вы можете использовать что-то вроде getExternalStorageDirectory().getAbsolutePath(), Ключевым моментом является то, что вам нужно найти место для хранения, доступное для записи вашему процессу / пользователю.

Другие вопросы по тегам