xamarin.android - Reading an android file with Xamarin -


this super simple i'm having trouble reading bytes file. have working fine ios android crashes directorynotfoundexception. think uri wrong i'm not sure i'm wrong it...

my view has button opens file picker...

var selecteddocumentpath = await dependencyservice.get<ifilepicker>().pickdocument(); 

my filepicker class...

class filepicker : ifilepicker {     public async task<string> pickdocument()     {         string fileuri = string.empty;          console.writeline("selecting document android device.");         intent intent = new intent(intent.actionopendocument);         intent.settype("*/*");         intent.putextra(intent.extramimetypes, new string[] { "application/msword", "application/vnd.openxmlformats-officedocument.wordprocessingml.document" });         intent.addcategory(intent.categoryopenable);          ((activity)forms.context).startactivityforresult(intent.createchooser(intent, "select document"), mainactivity.document_code);          return await getdocumentpath(new cancellationtokensource());     }      private async task<string> getdocumentpath(cancellationtokensource tokensource)     {         var path = string.empty;         var loopcheck = true;         while (loopcheck)         {             (var = 0; < 100; i++)             {                 if (mainactivity.fileuri != null || mainactivity.cancelled) { loopcheck = false; tokensource.cancel(); }                 try { await task.delay(1000, tokensource.token); }                 catch (taskcanceledexception) { break; }             }         }         if (!mainactivity.cancelled)         {             path = mainactivity.fileuri.originalstring;         }         mainactivity.fileuri = null;         mainactivity.cancelled = false;          return path;      } } 

the onactivityresult method located in mainactivity.cs....

protected override void onactivityresult(int requestcode, result resultcode, intent data) {      base.onactivityresult(requestcode, resultcode, data);       if (resultcode == result.ok && requestcode == document_code) { fileuri = new uri(data.data.path); }      else if(resultcode == result.canceled) { cancelled = true; } } 

some paths i'm getting...

data.datastring = content://com.android.externalstorage.documents/document/primary%3adownload%2fsampleresume%20(1).docx  data.data.schemespecificpart = //com.android.externalstorage.documents/document/primary:download/sampleresume (1).docx  data.data.path = /document/primary:download/sampleresume (1).docx 

and encoded options well. of these give me error later on when try , read using ...

file.readallbytes(selecteddocumentpath);  

edit: i've replaced fileuri = new uri(data.data.path); with

var uri = documentscontract.builddocumenturi(data.data.authority,                 documentscontract.getdocumentid(data.data));                 fileuri = new uri(uri.path);  

but still come out same type of path /document/primary:download/sampleresume (1).docx


Comments

Popular posts from this blog

jOOQ update returning clause with Oracle -

java - Warning equals/hashCode on @Data annotation lombok with inheritance -

java - BasicPathUsageException: Cannot join to attribute of basic type -