2017-03-07 10 views
1

私はテキストファイルを開いて、内容をsqlite dbに入れようとしています。問題は、どのような方法でもファイルを読むことができないことです。以下は私が達成した成功に最も近いものです。実行すると、FileError(2): "SECURITY_ERR"が生成されます。ionic2とandroid 5でsdCardからテキストファイルを読み取るには?

電話で
openFile(): void { 
    FileChooser.open() 
    .then(uri => { 
     console.log(uri); 
     File.resolveLocalFilesystemUrl(uri) 
     .then(entry=>{ 
     console.log(entry); 
     let path = entry.nativeURL.substring(0, entry.nativeURL.lastIndexOf('/')); 
     console.log(path); 
     File.readAsText(path, entry.name) 
     .then(content=>{ 
      console.log(content); 
     }) 
     }) 
     .catch(e => console.log(e)); 
    }); 
    } 

私はアプリは、SDカード上のRWアクセス権を持っていることを確認し、platform/AndroidManifest.xmlに私が設定している:私はとのさまざまなソリューションをインターネットを介して掘るとしようと多くの時間を費やしてきた

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

失敗。

編集:

ここ

が何であるかをconsole.log(cordova.file);出力:

applicationDirectory: "file:///android_asset/" 
applicationStorageDirectory: "file:///data/data/com.ionicframework.leki645195/" 
cacheDirectory: "file:///data/data/com.ionicframework.leki645195/cache/" 
dataDirectory: "file:///data/data/com.ionicframework.leki645195/files/" 
documentsDirectory: null 
externalApplicationStorageDirectory: "file:///storage/emulated/0/Android/data/com.ionicframework.leki645195/" 
externalCacheDirectory: "file:///storage/emulated/0/Android/data/com.ionicframework.leki645195/cache/" 
externalDataDirectory: "file:///storage/emulated/0/Android/data/com.ionicframework.leki645195/files/" 
externalRootDirectory: "file:///storage/emulated/0/" 
sharedDirectory: null 
syncedDataDirectory: null 
tempDirectory: null 

答えて

0

このコードを試してみてください、

openFile() { 
    this.fileChooser.open() 
    .then(uri => { 

    this.file.resolveLocalFilesystemUrl(uri) 
    .then(entry=>{ 

     let path = entry.nativeURL; 

     //read file contents 
     var rawFile = new XMLHttpRequest(); 
     rawFile.open("GET", path, false); 
     rawFile.onreadystatechange = function() 
     { 
      if(rawFile.readyState === 4) 
      { 
       if(rawFile.status === 200 || rawFile.status == 0) 
       { 
       var fileText = rawFile.responseText; 
       alert(fileText); 
       } 
      } 
     } 
     rawFile.send(null); 

    }) 
    .catch(e => console.log(e)); 
    }); 
} 
関連する問題