Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package xxxx.merchant;
- import android.Manifest;
- import android.annotation.SuppressLint;
- import android.app.Activity;
- import android.content.Intent;
- import android.content.pm.PackageManager;
- import android.content.res.Configuration;
- import android.net.Uri;
- import android.os.Build;
- import android.os.Bundle;
- import android.os.Environment;
- import android.provider.MediaStore;
- import android.support.annotation.NonNull;
- import android.support.v4.app.ActivityCompat;
- import android.support.v4.content.ContextCompat;
- import android.support.v7.app.AppCompatActivity;
- import android.util.Log;
- import android.view.KeyEvent;
- import android.view.View;
- import android.webkit.ValueCallback;
- import android.webkit.WebChromeClient;
- import android.webkit.WebSettings;
- import android.webkit.WebView;
- import android.webkit.WebViewClient;
- import android.widget.Toast;
- import java.io.File;
- import java.io.IOException;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- public class MainActivity extends AppCompatActivity{
- WebView webView;
- private static final String TAG = MainActivity.class.getSimpleName();
- private String mCM;
- private ValueCallback<Uri> mUM;
- private ValueCallback<Uri[]> mUMA;
- private final static int FCR=1;
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent intent){
- super.onActivityResult(requestCode, resultCode, intent);
- if(Build.VERSION.SDK_INT >= 21){
- Uri[] results = null;
- //Check if response is positive
- if(resultCode== Activity.RESULT_OK){
- if(requestCode == FCR){
- if(null == mUMA){
- return;
- }
- if(intent == null){
- //Capture Photo if no image available
- if(mCM != null){
- results = new Uri[]{Uri.parse(mCM)};
- }
- }else{
- String dataString = intent.getDataString();
- if(dataString != null){
- results = new Uri[]{Uri.parse(dataString)};
- }
- }
- }
- }
- mUMA.onReceiveValue(results);
- mUMA = null;
- }else{
- if(requestCode == FCR){
- if(null == mUM) return;
- Uri result = intent == null || resultCode != RESULT_OK ? null : intent.getData();
- mUM.onReceiveValue(result);
- mUM = null;
- }
- }
- }
- @SuppressLint({"SetJavaScriptEnabled", "WrongViewCast"})
- @Override
- protected void onCreate(Bundle savedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- if(Build.VERSION.SDK_INT >=23 && (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED)) {
- ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA}, 1);
- }
- webView = (WebView) findViewById(R.id.activity_main_webview);
- assert webView != null;
- WebSettings webSettings = webView.getSettings();
- webSettings.setJavaScriptEnabled(true);
- webSettings.setAllowFileAccess(true);
- if(Build.VERSION.SDK_INT >= 21){
- webSettings.setMixedContentMode(0);
- webView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
- }else if(Build.VERSION.SDK_INT >= 19){
- webView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
- }else if(Build.VERSION.SDK_INT < 19){
- webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
- }
- webView.setWebViewClient(new Callback());
- webView.loadUrl("xxxxxxx");
- webView.setWebChromeClient(new WebChromeClient(){
- //For Android 5.0+
- public boolean onShowFileChooser(
- WebView webView, ValueCallback<Uri[]> filePathCallback,
- WebChromeClient.FileChooserParams fileChooserParams){
- if(mUMA != null){
- mUMA.onReceiveValue(null);
- }
- mUMA = filePathCallback;
- Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
- if(takePictureIntent.resolveActivity(MainActivity.this.getPackageManager()) != null){
- File photoFile = null;
- try{
- photoFile = createImageFile();
- takePictureIntent.putExtra("PhotoPath", mCM);
- }catch(IOException ex){
- Log.e(TAG, "Image file creation failed", ex);
- }
- if(photoFile != null){
- mCM = "file:" + photoFile.getAbsolutePath();
- takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
- }else{
- takePictureIntent = null;
- }
- }
- Intent contentSelectionIntent = new Intent(Intent.ACTION_GET_CONTENT);
- contentSelectionIntent.addCategory(Intent.CATEGORY_OPENABLE);
- contentSelectionIntent.setType("*/*");
- // PRueba con Android Gus
- contentSelectionIntent.putExtra("crop", "true");
- contentSelectionIntent.putExtra("outputX", 150);
- contentSelectionIntent.putExtra("outputY", 150);
- contentSelectionIntent.putExtra("aspectX", 1);
- contentSelectionIntent.putExtra("aspectY", 1);
- contentSelectionIntent.putExtra("scale", true);
- // Fin prueba - Borrar si no funciona
- Intent[] intentArray;
- if(takePictureIntent != null){
- intentArray = new Intent[]{takePictureIntent};
- }else{
- intentArray = new Intent[0];
- }
- Intent chooserIntent = new Intent(Intent.ACTION_CHOOSER);
- chooserIntent.putExtra(Intent.EXTRA_INTENT, contentSelectionIntent);
- chooserIntent.putExtra(Intent.EXTRA_TITLE, "Seleccionar imagen");
- chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, intentArray);
- startActivityForResult(chooserIntent, FCR);
- return true;
- }
- });
- }
- public class Callback extends WebViewClient{
- public void onReceivedError(WebView view, int errorCode, String description, String failingUrl){
- Toast.makeText(getApplicationContext(), "Failed loading app!", Toast.LENGTH_SHORT).show();
- }
- }
- // Create an image file
- private File createImageFile() throws IOException{
- @SuppressLint("SimpleDateFormat") String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
- String imageFileName = "img_"+timeStamp+"_";
- File storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
- return File.createTempFile(imageFileName,".jpg",storageDir);
- }
- @Override
- public boolean onKeyDown(int keyCode, @NonNull KeyEvent event){
- if(event.getAction() == KeyEvent.ACTION_DOWN){
- switch(keyCode){
- case KeyEvent.KEYCODE_BACK:
- if(webView.canGoBack()){
- webView.goBack();
- }else{
- finish();
- }
- return true;
- }
- }
- return super.onKeyDown(keyCode, event);
- }
- @Override
- public void onConfigurationChanged(Configuration newConfig){
- super.onConfigurationChanged(newConfig);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement