added checks to ensure existing files are returned. fixes an issue with opening files from gdrive on Android 4.4+ through system file manager

This commit is contained in:
Philipp Crocoll 2015-01-06 03:59:46 +01:00
parent a1e83c1706
commit 7cffa9a3c3

View File

@ -18,6 +18,7 @@ This file is part of Keepass2Android, Copyright 2013 Philipp Crocoll. This file
using System; using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO;
using Android.App; using Android.App;
using Android.Content; using Android.Content;
using Android.Database; using Android.Database;
@ -200,7 +201,9 @@ namespace keepass2android
ICursor c1 = ctx.ContentResolver.Query(uri, col, null, null, null); ICursor c1 = ctx.ContentResolver.Query(uri, col, null, null, null);
c1.MoveToFirst(); c1.MoveToFirst();
return c1.GetString(0); var possibleFilename = c1.GetString(0);
if (File.Exists(possibleFilename))
return possibleFilename;
} }
} }
catch (Exception e) catch (Exception e)
@ -209,7 +212,7 @@ namespace keepass2android
} }
String filename = data.Data.Path; String filename = data.Data.Path;
if (String.IsNullOrEmpty(filename)) if ((String.IsNullOrEmpty(filename) || (!File.Exists(filename))))
filename = data.DataString; filename = data.DataString;
return filename; return filename;
} }