don't use fileprovider when opening files on android M and below

This commit is contained in:
Daniel Gultsch 2016-09-04 22:59:40 +02:00
parent d2c475d501
commit 1dc55f72e3
2 changed files with 18 additions and 7 deletions

View File

@ -11,6 +11,7 @@ import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.net.Uri; import android.net.Uri;
import android.os.AsyncTask; import android.os.AsyncTask;
import android.os.Build;
import android.support.v4.content.FileProvider; import android.support.v4.content.FileProvider;
import android.text.Spannable; import android.text.Spannable;
import android.text.SpannableString; import android.text.SpannableString;
@ -716,21 +717,30 @@ public class MessageAdapter extends ArrayAdapter<Message> {
if (mime == null) { if (mime == null) {
mime = "*/*"; mime = "*/*";
} }
Uri uri = FileProvider.getUriForFile(activity,"eu.siacs.conversations.files",file); Uri uri;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
try {
uri = FileProvider.getUriForFile(activity, "eu.siacs.conversations.files", file);
} catch (IllegalArgumentException e) {
Toast.makeText(activity,activity.getString(R.string.no_permission_to_access_x,file.getAbsolutePath()), Toast.LENGTH_SHORT).show();
return;
}
openIntent.setDataAndType(uri, mime);
openIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
} else {
uri = Uri.fromFile(file);
}
openIntent.setDataAndType(uri, mime); openIntent.setDataAndType(uri, mime);
openIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
PackageManager manager = activity.getPackageManager(); PackageManager manager = activity.getPackageManager();
List<ResolveInfo> infos = manager.queryIntentActivities(openIntent, 0); List<ResolveInfo> info = manager.queryIntentActivities(openIntent, 0);
if (infos.size() == 0) { if (info.size() == 0) {
openIntent.setDataAndType(Uri.fromFile(file),"*/*"); openIntent.setDataAndType(Uri.fromFile(file),"*/*");
} }
try { try {
getContext().startActivity(openIntent); getContext().startActivity(openIntent);
return;
} catch (ActivityNotFoundException e) { } catch (ActivityNotFoundException e) {
//ignored Toast.makeText(activity,R.string.no_application_found_to_open_file,Toast.LENGTH_SHORT).show();
} }
Toast.makeText(activity,R.string.no_application_found_to_open_file,Toast.LENGTH_SHORT).show();
} }
public void showLocation(Message message) { public void showLocation(Message message) {

View File

@ -679,4 +679,5 @@
<string name="me">Me</string> <string name="me">Me</string>
<string name="contact_asks_for_presence_subscription">Contact asks for presence subscription</string> <string name="contact_asks_for_presence_subscription">Contact asks for presence subscription</string>
<string name="allow">Allow</string> <string name="allow">Allow</string>
<string name="no_permission_to_access_x">No permission to access %s</string>
</resources> </resources>