You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
2.1 KiB
Java
92 lines
2.1 KiB
Java
/**
|
|
*
|
|
* Phonegap Base64 plugin
|
|
*
|
|
* Version 1.0
|
|
*
|
|
* Hazem Hagrass 2013
|
|
*
|
|
*/
|
|
|
|
package com.badrit.Base64;
|
|
|
|
import java.io.ByteArrayInputStream;
|
|
import java.io.ByteArrayOutputStream;
|
|
import java.io.File;
|
|
import java.io.FileInputStream;
|
|
import java.util.ArrayList;
|
|
|
|
import org.json.JSONArray;
|
|
import org.json.JSONException;
|
|
import org.json.JSONObject;
|
|
|
|
import android.content.Intent;
|
|
import android.database.Cursor;
|
|
import android.graphics.Bitmap;
|
|
import android.graphics.BitmapFactory;
|
|
import android.net.Uri;
|
|
import android.text.Html;
|
|
import android.util.Base64;
|
|
|
|
import org.apache.cordova.CallbackContext;
|
|
import org.apache.cordova.CordovaPlugin;
|
|
import org.apache.cordova.LOG;
|
|
|
|
public class Base64Plugin extends CordovaPlugin {
|
|
|
|
@Override
|
|
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
|
|
if ("encodeFile".equals(action)) {
|
|
|
|
try {
|
|
JSONObject parameters = args.getJSONObject(0);
|
|
if (parameters != null) {
|
|
String base64String = encodeFile(parameters.getString("filePath"));
|
|
callbackContext.success(base64String);
|
|
}
|
|
} catch (Exception e) {
|
|
|
|
}
|
|
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
private String encodeFile(String filePath) {
|
|
String imgStr = "";
|
|
try {
|
|
Uri _uri = Uri.parse(filePath);
|
|
if (_uri != null && "content".equals(_uri.getScheme())) {
|
|
Cursor cursor = cordova
|
|
.getActivity()
|
|
.getContentResolver()
|
|
.query(_uri,
|
|
new String[] { android.provider.MediaStore.Images.ImageColumns.DATA },
|
|
null, null, null);
|
|
cursor.moveToFirst();
|
|
filePath = cursor.getString(0);
|
|
cursor.close();
|
|
} else {
|
|
filePath = _uri.getPath();
|
|
}
|
|
File imageFile = new File(filePath);
|
|
if (!imageFile.exists())
|
|
return imgStr;
|
|
|
|
byte[] bytes = new byte[(int) imageFile.length()];
|
|
|
|
FileInputStream fileInputStream = new FileInputStream(imageFile);
|
|
fileInputStream.read(bytes);
|
|
|
|
imgStr = Base64.encodeToString(bytes, Base64.DEFAULT);
|
|
imgStr = "data:image/*;charset=utf-8;base64," + imgStr;
|
|
} catch (Exception e) {
|
|
return imgStr;
|
|
}
|
|
return imgStr;
|
|
}
|
|
|
|
|
|
}
|