2017-02-21 13 views
1
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側も同様です。私は私のjavascriptの中にerr-CREATE-FILEを受け取り続ける。したがってos.Createos.Openは期待どおりに動作しません。os.Createとos.Openはgomobileと連携していません。ネイティブに反応してください。

内部ストレージですが、アクセス権は必要ありませんが、マニフェストファイルのアクセス権も有効にしていますが、利用できません。

OpenCreateのファイルがアンドロイドにある場合、gomobileを使用してサイドでリアクションネイティブを使用するにはどうすればよいですか?

アップデート: - のようなものをadb logcat

、私はあなたがパラメータとしてこれを渡すのであれば、あなたはいくつかの成功を持っている必要がありますすべての場所で

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

+0

os.createからのエラーは何ですか? "/ sdcard/myfile"のような絶対パスを使って保存しようとしましたか? – Steve101

+0

Java/ObjC/Swiftでファイルを開くことはできますか? –

答えて

0

これを得続けます以下は私のために働いています:

go:

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

のJava:

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

また、あなたがgetExternalStorageDirectory().getAbsolutePath()ようなものを使用することができます。彼らの鍵は、プロセス/ユーザが書き込み可能なストレージワイアのどこかに移動する必要があることです。

関連する問題