diff options
author | Maxime Biais <maxime.biais@gmail.com> | 2016-10-03 18:10:52 +0200 |
---|---|---|
committer | Maxime Biais <maxime.biais@gmail.com> | 2016-10-03 18:10:52 +0200 |
commit | 5862838a0de38708306bffb5c4f72451cf8ffacc (patch) | |
tree | 614c5aba44d91d42d0f91dfad601f8684b2b08df | |
parent | cb3f360209d720ebd00b8782a3a152c96bcddc02 (diff) | |
parent | 1a93647bbf014f913220e60262e883b583787fce (diff) | |
download | gradle-perf-android-medium-5862838a0de38708306bffb5c4f72451cf8ffacc.tar.gz |
Merge branch 'release/5.9' of https://github.com/wordpress-mobile/WordPress-Android into release/5.9
7 files changed, 61 insertions, 34 deletions
diff --git a/WordPress/src/main/AndroidManifest.xml b/WordPress/src/main/AndroidManifest.xml index 35d2bd005..1c0c1fb85 100644 --- a/WordPress/src/main/AndroidManifest.xml +++ b/WordPress/src/main/AndroidManifest.xml @@ -512,5 +512,16 @@ <!-- Smart Lock for Passwords --> <meta-data android:name="asset_statements" android:resource="@string/asset_statements" /> + + <!-- Provider for exposing file URIs on Android 7+ --> + <provider + android:name="android.support.v4.content.FileProvider" + android:authorities="${applicationId}.provider" + android:exported="false" + android:grantUriPermissions="true"> + <meta-data + android:name="android.support.FILE_PROVIDER_PATHS" + android:resource="@xml/provider_paths"/> + </provider> </application> </manifest> diff --git a/WordPress/src/main/java/org/wordpress/android/ui/main/MeFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/main/MeFragment.java index 316cf2a3c..7873492d3 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/main/MeFragment.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/main/MeFragment.java @@ -37,6 +37,7 @@ import android.view.ViewOutlineProvider; import android.widget.TextView; import android.widget.Toast; +import org.wordpress.android.BuildConfig; import org.wordpress.android.R; import org.wordpress.android.WordPress; import org.wordpress.android.analytics.AnalyticsTracker; @@ -504,13 +505,14 @@ public class MeFragment extends Fragment { } private void askForCameraOrGallery() { - WordPressMediaUtils.launchPictureLibraryOrCapture(MeFragment.this, new WordPressMediaUtils - .LaunchCameraCallback() { - @Override - public void onMediaCapturePathReady(String mediaCapturePath) { - mMediaCapturePath = mediaCapturePath; - } - }); + WordPressMediaUtils + .launchPictureLibraryOrCapture(MeFragment.this, BuildConfig.APPLICATION_ID, + new WordPressMediaUtils.LaunchCameraCallback() { + @Override + public void onMediaCapturePathReady(String mediaCapturePath) { + mMediaCapturePath = mediaCapturePath; + } + }); } private void startCropActivity(Uri uri) { diff --git a/WordPress/src/main/java/org/wordpress/android/ui/media/MediaAddFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/media/MediaAddFragment.java index 81d84e77a..ea8d06f47 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/media/MediaAddFragment.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/media/MediaAddFragment.java @@ -20,6 +20,7 @@ import android.view.View; import android.view.ViewGroup; import android.widget.Toast; +import org.wordpress.android.BuildConfig; import org.wordpress.android.R; import org.wordpress.android.WordPress; import org.wordpress.android.models.Blog; @@ -231,7 +232,7 @@ public class MediaAddFragment extends Fragment implements LaunchCameraCallback { } public void launchCamera() { - WordPressMediaUtils.launchCamera(this, this); + WordPressMediaUtils.launchCamera(this, BuildConfig.APPLICATION_ID, this); } public void launchVideoCamera() { diff --git a/WordPress/src/main/java/org/wordpress/android/ui/media/MediaPickerActivity.java b/WordPress/src/main/java/org/wordpress/android/ui/media/MediaPickerActivity.java index 0faf227e2..ea4664f67 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/media/MediaPickerActivity.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/media/MediaPickerActivity.java @@ -23,6 +23,7 @@ import android.widget.LinearLayout; import com.android.volley.toolbox.ImageLoader; +import org.wordpress.android.BuildConfig; import org.wordpress.android.R; import org.wordpress.android.WordPress; import org.wordpress.android.ui.RequestCodes; @@ -134,12 +135,13 @@ public class MediaPickerActivity extends AppCompatActivity if (item.getItemId() == android.R.id.home) { finish(); } else if (item.getItemId() == R.id.capture_image) { - WordPressMediaUtils.launchCamera(this, new WordPressMediaUtils.LaunchCameraCallback() { - @Override - public void onMediaCapturePathReady(String mediaCapturePath) { - mCapturePath = mediaCapturePath; - } - }); + WordPressMediaUtils.launchCamera(this, BuildConfig.APPLICATION_ID, + new WordPressMediaUtils.LaunchCameraCallback() { + @Override + public void onMediaCapturePathReady(String mediaCapturePath) { + mCapturePath = mediaCapturePath; + } + }); return true; } else if (item.getItemId() == R.id.capture_video) { WordPressMediaUtils.launchVideoCamera(this); diff --git a/WordPress/src/main/java/org/wordpress/android/ui/media/WordPressMediaUtils.java b/WordPress/src/main/java/org/wordpress/android/ui/media/WordPressMediaUtils.java index 749666846..16c2c5ccc 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/media/WordPressMediaUtils.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/media/WordPressMediaUtils.java @@ -13,6 +13,7 @@ import android.net.Uri; import android.os.AsyncTask; import android.os.Environment; import android.provider.MediaStore; +import android.support.v4.content.FileProvider; import android.widget.ImageView; import com.android.volley.toolbox.ImageLoader; @@ -121,41 +122,43 @@ public class WordPressMediaUtils { return Intent.createChooser(intent, title); } - public static void launchCamera(Activity activity, LaunchCameraCallback callback) { - Intent intent = preparelaunchCamera(activity, callback); + public static void launchCamera(Activity activity, String applicationId, LaunchCameraCallback callback) { + Intent intent = preparelaunchCamera(activity, applicationId, callback); if (intent != null) { AppLockManager.getInstance().setExtendedTimeout(); activity.startActivityForResult(intent, RequestCodes.TAKE_PHOTO); } } - public static void launchCamera(Fragment fragment, LaunchCameraCallback callback) { + public static void launchCamera(Fragment fragment, String applicationId, LaunchCameraCallback callback) { if (!fragment.isAdded()) { return; } - Intent intent = preparelaunchCamera(fragment.getActivity(), callback); + Intent intent = preparelaunchCamera(fragment.getActivity(), applicationId, callback); if (intent != null) { AppLockManager.getInstance().setExtendedTimeout(); fragment.startActivityForResult(intent, RequestCodes.TAKE_PHOTO); } } - private static Intent preparelaunchCamera(Context context, LaunchCameraCallback callback) { + private static Intent preparelaunchCamera(Context context, String applicationId, LaunchCameraCallback callback) { String state = android.os.Environment.getExternalStorageState(); if (!state.equals(android.os.Environment.MEDIA_MOUNTED)) { showSDCardRequiredDialog(context); return null; } else { - return getLaunchCameraIntent(callback); + return getLaunchCameraIntent(context, applicationId, callback); } } - private static Intent getLaunchCameraIntent(LaunchCameraCallback callback) { + private static Intent getLaunchCameraIntent(Context context, String applicationId, LaunchCameraCallback callback) { File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM); - String mediaCapturePath = path + File.separator + "Camera" + File.separator + "wp-" + System.currentTimeMillis() + ".jpg"; + String mediaCapturePath = path + File.separator + "Camera" + File.separator + "wp-" + System + .currentTimeMillis() + ".jpg"; Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); - intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(mediaCapturePath))); + intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, FileProvider.getUriForFile(context, + applicationId + ".provider", new File(mediaCapturePath))); if (callback != null) { callback.onMediaCapturePathReady(mediaCapturePath); @@ -173,20 +176,21 @@ public class WordPressMediaUtils { return intent; } - public static void launchPictureLibraryOrCapture(Fragment fragment, LaunchCameraCallback callback) { + public static void launchPictureLibraryOrCapture(Fragment fragment, String applicationId, LaunchCameraCallback + callback) { if (!fragment.isAdded()) { return; } AppLockManager.getInstance().setExtendedTimeout(); - fragment.startActivityForResult(makePickOrCaptureIntent(fragment.getActivity(), callback), + fragment.startActivityForResult(makePickOrCaptureIntent(fragment.getActivity(), applicationId, callback), RequestCodes.PICTURE_LIBRARY_OR_CAPTURE); } - private static Intent makePickOrCaptureIntent(Context context, LaunchCameraCallback callback) { + private static Intent makePickOrCaptureIntent(Context context, String applicationId, LaunchCameraCallback callback) { Intent pickPhotoIntent = prepareGalleryIntent(context.getString(R.string.capture_or_pick_photo)); if (DeviceUtils.getInstance().hasCamera(context)) { - Intent cameraIntent = getLaunchCameraIntent(callback); + Intent cameraIntent = getLaunchCameraIntent(context, applicationId, callback); pickPhotoIntent.putExtra( Intent.EXTRA_INITIAL_INTENTS, new Intent[]{ cameraIntent }); diff --git a/WordPress/src/main/java/org/wordpress/android/ui/posts/EditPostActivity.java b/WordPress/src/main/java/org/wordpress/android/ui/posts/EditPostActivity.java index e670d7cd7..dc8761fcc 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/posts/EditPostActivity.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/posts/EditPostActivity.java @@ -1226,13 +1226,14 @@ public class EditPostActivity extends AppCompatActivity implements EditorFragmen } private void launchCamera() { - WordPressMediaUtils.launchCamera(this, new WordPressMediaUtils.LaunchCameraCallback() { - @Override - public void onMediaCapturePathReady(String mediaCapturePath) { - mMediaCapturePath = mediaCapturePath; - AppLockManager.getInstance().setExtendedTimeout(); - } - }); + WordPressMediaUtils.launchCamera(this, BuildConfig.APPLICATION_ID, + new WordPressMediaUtils.LaunchCameraCallback() { + @Override + public void onMediaCapturePathReady(String mediaCapturePath) { + mMediaCapturePath = mediaCapturePath; + AppLockManager.getInstance().setExtendedTimeout(); + } + }); } protected void setPostContentFromShareAction() { diff --git a/WordPress/src/main/res/xml/provider_paths.xml b/WordPress/src/main/res/xml/provider_paths.xml new file mode 100644 index 000000000..7c82c7779 --- /dev/null +++ b/WordPress/src/main/res/xml/provider_paths.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<paths xmlns:android="http://schemas.android.com/apk/res/android"> + <external-path + name="external_files" + path="."/> +</paths> |