You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by sh...@apache.org on 2016/12/08 00:56:26 UTC
[04/25] cordova-plugin-camera git commit: CB-11625: Managed to get
Content Providers to work with a weird mix of Content Providers and
non-Content Providers
CB-11625: Managed to get Content Providers to work with a weird mix of Content Providers and non-Content Providers
Project: http://git-wip-us.apache.org/repos/asf/cordova-plugin-camera/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-plugin-camera/commit/00e0a7dc
Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugin-camera/tree/00e0a7dc
Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugin-camera/diff/00e0a7dc
Branch: refs/heads/2.3.x
Commit: 00e0a7dc469133faf92b46f0d72112d4d873844e
Parents: b62fdf5
Author: Joe Bowser <bo...@apache.org>
Authored: Wed Aug 3 14:43:11 2016 -0700
Committer: Joe Bowser <bo...@apache.org>
Committed: Wed Aug 3 14:43:11 2016 -0700
----------------------------------------------------------------------
src/android/CameraLauncher.java | 71 ++++++++++++++++++++----------------
1 file changed, 39 insertions(+), 32 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-plugin-camera/blob/00e0a7dc/src/android/CameraLauncher.java
----------------------------------------------------------------------
diff --git a/src/android/CameraLauncher.java b/src/android/CameraLauncher.java
index 2f4a1e0..0a9cd38 100644
--- a/src/android/CameraLauncher.java
+++ b/src/android/CameraLauncher.java
@@ -33,12 +33,13 @@ import java.util.Date;
import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaPlugin;
import org.apache.cordova.CordovaResourceApi;
+import org.apache.cordova.CoreAndroid;
import org.apache.cordova.LOG;
import org.apache.cordova.PermissionHelper;
import org.apache.cordova.PluginResult;
-import org.apache.mobilespec.BuildConfig;
import org.json.JSONArray;
import org.json.JSONException;
+import org.apache.cordova.Api24Camera.BuildConfig;
import android.Manifest;
import android.app.Activity;
@@ -120,6 +121,7 @@ public class CameraLauncher extends CordovaPlugin implements MediaScannerConnect
private MediaScannerConnection conn; // Used to update gallery app with newly-written files
private Uri scanMe; // Uri of image to be added to content store
private Uri croppedUri;
+ private String applicationId;
/**
@@ -132,6 +134,10 @@ public class CameraLauncher extends CordovaPlugin implements MediaScannerConnect
*/
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
this.callbackContext = callbackContext;
+ //Adding an API to CoreAndroid to get the BuildConfigValue
+ //This allows us to not make this a breaking change to embedding
+ this.applicationId = (String) CoreAndroid.getBuildConfigValue(cordova.getActivity(), "APPLICATION_ID");
+
if (action.equals("takePicture")) {
this.srcType = CAMERA;
@@ -233,8 +239,8 @@ public class CameraLauncher extends CordovaPlugin implements MediaScannerConnect
* or to display URI in an img tag
* img.src=result;
*
- * @param quality Compression quality hint (0-100: 0=low quality & high compression, 100=compress of max quality)
* @param returnType Set the type of image to return.
+ * @param encodingType Compression quality hint (0-100: 0=low quality & high compression, 100=compress of max quality)
*/
public void callTakePicture(int returnType, int encodingType) {
boolean saveAlbumPermission = PermissionHelper.hasPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE);
@@ -285,7 +291,7 @@ public class CameraLauncher extends CordovaPlugin implements MediaScannerConnect
// Specify file so that large image is captured and returned
File photo = createCaptureFile(encodingType);
this.imageUri = FileProvider.getUriForFile(cordova.getActivity(),
- BuildConfig.APPLICATION_ID + ".provider",
+ applicationId + ".provider",
photo);
intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, this.imageUri);
//We can write to this URI, this will hopefully allow us to write files to get to the next step
@@ -346,7 +352,6 @@ public class CameraLauncher extends CordovaPlugin implements MediaScannerConnect
/**
* Get image from photo library.
*
- * @param quality Compression quality hint (0-100: 0=low quality & high compression, 100=compress of max quality)
* @param srcType The album to get image from.
* @param returnType Set the type of image to return.
* @param encodingType
@@ -405,37 +410,39 @@ public class CameraLauncher extends CordovaPlugin implements MediaScannerConnect
*/
private void performCrop(Uri picUri, int destType, Intent cameraIntent) {
try {
- Intent cropIntent = new Intent("com.android.camera.action.CROP");
- // indicate image type and Uri
- cropIntent.setDataAndType(picUri, "image/*");
- // set crop properties
- cropIntent.putExtra("crop", "true");
-
- // indicate output X and Y
- if (targetWidth > 0) {
+ Intent cropIntent = new Intent("com.android.camera.action.CROP");
+ // indicate image type and Uri
+ cropIntent.setDataAndType(picUri, "image/*");
+ // set crop properties
+ cropIntent.putExtra("crop", "true");
+
+
+ // indicate output X and Y
+ if (targetWidth > 0) {
cropIntent.putExtra("outputX", targetWidth);
- }
- if (targetHeight > 0) {
+ }
+ if (targetHeight > 0) {
cropIntent.putExtra("outputY", targetHeight);
- }
- if (targetHeight > 0 && targetWidth > 0 && targetWidth == targetHeight) {
+ }
+ if (targetHeight > 0 && targetWidth > 0 && targetWidth == targetHeight) {
cropIntent.putExtra("aspectX", 1);
cropIntent.putExtra("aspectY", 1);
- }
- // create new file handle to get full resolution crop
- croppedUri = FileProvider.getUriForFile(cordova.getActivity(),
- BuildConfig.APPLICATION_ID + ".provider",
- createCaptureFile(this.encodingType, System.currentTimeMillis() + ""));
- cropIntent.putExtra("output", croppedUri);
+ }
+ // create new file handle to get full resolution crop
+ croppedUri = Uri.fromFile(createCaptureFile(this.encodingType, System.currentTimeMillis() + ""));
+ cropIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
+ cropIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
+ cropIntent.putExtra("output", croppedUri);
- // start the activity - we handle returning in onActivityResult
- if (this.cordova != null) {
- this.cordova.startActivityForResult((CordovaPlugin) this,
- cropIntent, CROP_CAMERA + destType);
- }
+ // start the activity - we handle returning in onActivityResult
+
+ if (this.cordova != null) {
+ this.cordova.startActivityForResult((CordovaPlugin) this,
+ cropIntent, CROP_CAMERA + destType);
+ }
} catch (ActivityNotFoundException anfe) {
- Log.e(LOG_TAG, "Crop operation not supported on this device");
+ Log.e(LOG_TAG, "Crop operation not supported on this device");
try {
processResultFromCamera(destType, cameraIntent);
}
@@ -460,7 +467,7 @@ public class CameraLauncher extends CordovaPlugin implements MediaScannerConnect
ExifHelper exif = new ExifHelper();
String sourcePath = (this.allowEdit && this.croppedUri != null) ?
- getFileNameFromUri(this.croppedUri) :
+ FileHelper.stripFileProtocol(this.croppedUri.toString()) :
getFileNameFromUri(this.imageUri);
@@ -487,7 +494,6 @@ public class CameraLauncher extends CordovaPlugin implements MediaScannerConnect
if (this.allowEdit && this.croppedUri != null) {
- Uri croppedUri = Uri.fromFile(new File(getFileNameFromUri(this.croppedUri)));
writeUncompressedImage(croppedUri, galleryUri);
} else {
Uri imageUri = Uri.fromFile(new File(getFileNameFromUri(this.imageUri)));
@@ -791,7 +797,7 @@ public class CameraLauncher extends CordovaPlugin implements MediaScannerConnect
try {
if (this.allowEdit) {
Uri tmpFile = FileProvider.getUriForFile(cordova.getActivity(),
- BuildConfig.APPLICATION_ID + ".provider",
+ applicationId + ".provider",
createCaptureFile(this.encodingType));
performCrop(tmpFile, destType, intent);
} else {
@@ -881,7 +887,8 @@ public class CameraLauncher extends CordovaPlugin implements MediaScannerConnect
* In the special case where the default width, height and quality are unchanged
* we just write the file out to disk saving the expensive Bitmap.compress function.
*
- * @param uri
+ * @param src
+ * @param dest
* @throws FileNotFoundException
* @throws IOException
*/
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org