diff options
Diffstat (limited to 'OpenKeychain/src/main')
3 files changed, 22 insertions, 5 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/InputDataOperation.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/InputDataOperation.java index 43fc11b84..6682cc6e7 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/InputDataOperation.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/InputDataOperation.java @@ -119,8 +119,9 @@ public class InputDataOperation extends BaseOperation<InputDataParcel> {              // inform the storage provider about the mime type for this uri              if (decryptResult.getDecryptionMetadata() != null) { -                TemporaryFileProvider.setMimeType(mContext, currentInputUri, -                        decryptResult.getDecryptionMetadata().getMimeType()); +                OpenPgpMetadata meta = decryptResult.getDecryptionMetadata(); +                TemporaryFileProvider.setName(mContext, currentInputUri, meta.getFilename()); +                TemporaryFileProvider.setMimeType(mContext, currentInputUri, meta.getMimeType());              }          } else { diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/TemporaryFileProvider.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/TemporaryFileProvider.java index 68963d595..bb44314d7 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/TemporaryFileProvider.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/TemporaryFileProvider.java @@ -99,6 +99,12 @@ public class TemporaryFileProvider extends ContentProvider {          return context.getContentResolver().insert(CONTENT_URI, contentValues);      } +    public static int setName(Context context, Uri uri, String name) { +        ContentValues values = new ContentValues(); +        values.put(TemporaryFileColumns.COLUMN_NAME, name); +        return context.getContentResolver().update(uri, values, null, null); +    } +      public static int setMimeType(Context context, Uri uri, String mimetype) {          ContentValues values = new ContentValues();          values.put(TemporaryFileColumns.COLUMN_TYPE, mimetype); @@ -283,8 +289,11 @@ public class TemporaryFileProvider extends ContentProvider {      @Override      public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { -        if (values.size() != 1 || !values.containsKey(TemporaryFileColumns.COLUMN_TYPE)) { -            throw new UnsupportedOperationException("Update supported only for type field!"); +        if (values.size() != 1) { +            throw new UnsupportedOperationException("Update supported only for one field at a time!"); +        } +        if (!values.containsKey(TemporaryFileColumns.COLUMN_NAME) && !values.containsKey(TemporaryFileColumns.COLUMN_TYPE)) { +            throw new UnsupportedOperationException("Update supported only for name and type field!");          }          if (selection != null || selectionArgs != null) {              throw new UnsupportedOperationException("Update supported only for plain uri!"); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysListFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysListFragment.java index b399af950..18063ed1a 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysListFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysListFragment.java @@ -330,9 +330,16 @@ public class ImportKeysListFragment extends ListFragment implements      }      public void loadNew(LoaderState loaderState) { -          mLoaderState = loaderState; +        if (mLoaderState instanceof BytesLoaderState) { +            BytesLoaderState ls = (BytesLoaderState) mLoaderState; + +            if ( ! checkAndRequestReadPermission(ls.mDataUri)) { +                return; +            } +        } +          restartLoaders();      }  | 
