如何将INTERNAL页面更改为EXTERNAL页面(webview)

时间:2017-06-15 03:57:57

标签: android android-webview webpage

我的问题是我想将INTERNAL页面更改为EXTERNAL页面(webview)

这是我的MainActivity的代码

package com.momo.yoyo.lolo;
....
public class MainActivity extends AppCompatActivity implements View.OnClickListener, DownloadListener, IabBroadcastReceiver.IabBroadcastListener {

  /* URL saved to be loaded after fb login */
  private static String target_url, target_url_prefix;
  private Context mContext;
  private WebView mWebview, mWebviewPop;
  private ValueCallback<Uri> mUploadMessage;
  public ValueCallback<Uri[]> uploadMessage;
  private static final int FILE_CHOOSER_RESULT_CODE = 1;
  private static final int REQUEST_SELECT_FILE = 2;
  private FrameLayout mContainer;
  private ImageView mImageViewSplash;
  private ImageView mBack;
  private ImageView mForward;
  private ImageView mBilling;
  private boolean show_content = true, showToolBar = true;

  private AdView mAdView;
  private String urlData, currentUrl, contentDisposition, mimeType;
  private AdMob admob;

  //PAYMENT
  IabHelper mHelper;
  // Provides purchase notification while this app is running
  IabBroadcastReceiver mBroadcastReceiver;

  private String ITEM_SKU = "";
  private boolean isPurchased = false;

  //DATA FOR GEOLOCAION REQUEST
  String geoLocationOrigin;
  GeolocationPermissions.Callback geoLocationCallback;

  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.content_main);
    checkURL(getIntent());
    initPayment();
    initComponents();
    initBrowser(savedInstanceState);

    if (savedInstanceState != null) {
        showContent();
    } else {
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                showContent();
            }
        }, 5000);
    }
}
private void checkURL(Intent intent) {
    if (intent != null) {
        if ("text/plain".equals(intent.getType()) && !TextUtils.isEmpty(intent.getStringExtra(Intent.EXTRA_TEXT))) {
            target_url = intent.getStringExtra(Intent.EXTRA_TEXT);
            target_url_prefix = Uri.parse(target_url).getHost();
            currentUrl = target_url;
            return;
        }
    }

    target_url = getString(R.string.target_url);

    if (TextUtils.isEmpty(target_url)) {
        target_url = "file:///android_asset/index.html";
       target_url_prefix = "android_asset";
    } else {
        target_url_prefix = Uri.parse(target_url).getHost();
    }

    currentUrl = target_url;

    if (mWebview != null) {
        if (mWebviewPop != null) {
            mWebviewPop.setVisibility(View.GONE);
            mContainer.removeView(mWebviewPop);
            mWebviewPop = null;
        }
        mWebview.setVisibility(View.VISIBLE);
    }
}

@Override
protected void onResume() {
    super.onResume();
    Zale.activityResumed();
    hideStatusBar();
    checkURL(getIntent());
}

@Override
protected void onPause() {
    super.onPause();
    Zale.activityPaused();
}

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
}

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    mWebview.saveState(outState);
}

private void removeAds() {
    mAdView.setVisibility(View.GONE);
    if (admob != null) {
        admob.stopRepeatingTask();
    }
    mBilling.setVisibility(View.GONE);
}

private void initPayment() {
    mBilling = (ImageView)findViewById(R.id.billing);
    isPurchased = Pref.getValue(this, ITEM_SKU, false);

    ITEM_SKU = getString(R.string.item_sku);
    String base64EncodedPublicKey = getString(R.string.public_key);
    if (!TextUtils.isEmpty(ITEM_SKU) && !TextUtils.isEmpty(base64EncodedPublicKey)) {
        mHelper = new IabHelper(this, base64EncodedPublicKey);
        mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
            @Override
            public void onIabSetupFinished(IabResult result) {
                if (result.isFailure()) {
                    Log.v("Purches", "isFailure");
                } else {
                    mBroadcastReceiver = new IabBroadcastReceiver(MainActivity.this);
                    IntentFilter broadcastFilter = new IntentFilter(IabBroadcastReceiver.ACTION);
                    registerReceiver(mBroadcastReceiver, broadcastFilter);
                    if (mHelper != null) {
                        mHelper.queryInventoryAsync(mGotInventoryListener);
                    }
                }
            }
        });
    } else {
        mBilling.setVisibility(View.GONE);
    }
}

IabHelper.QueryInventoryFinishedListener mGotInventoryListener = new IabHelper.QueryInventoryFinishedListener() {
    public void onQueryInventoryFinished(IabResult result, Inventory inventory) {
        // Have we been disposed of in the meantime? If so, quit.
        if (mHelper == null) return;

        // Is it a failure?
        if (result.isFailure()) {
            return;
        }

        // Do we have the premium upgrade?
        Purchase premiumPurchase = inventory.getPurchase(ITEM_SKU);
        isPurchased = (premiumPurchase != null);
        Pref.setValue(MainActivity.this, ITEM_SKU, isPurchased);
        if (isPurchased) {
            removeAds();
        }
    }
};

IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() {
    @Override
    public void onIabPurchaseFinished(IabResult result, Purchase info) {
        if (result.isSuccess()) {
            Pref.setValue(MainActivity.this, ITEM_SKU, true);
            removeAds();
        }
    }
};

private void initComponents() {
    mContext = this.getApplicationContext();
    mImageViewSplash = (ImageView) findViewById(R.id.image_splash);
    mAdView = (AdView) findViewById(R.id.adView);
    if (isPurchased) {
        mAdView.setVisibility(View.GONE);
    }

    if (TextUtils.isEmpty(getString(R.string.toolbar))) {
        showToolBar = false;
    }

    if (showToolBar) {
        mBack = (ImageView) findViewById(R.id.back);
        mForward = (ImageView) findViewById(R.id.forward);
        ImageView mRefresh = (ImageView) findViewById(R.id.refresh);

        mBack.setOnClickListener(this);
        mForward.setOnClickListener(this);
        mRefresh.setOnClickListener(this);
        //if app isn't buy
        if (!isPurchased) {
            mBilling.setOnClickListener(this);
        } else {
            mBilling.setVisibility(View.GONE);
        }
    } else {
        LinearLayout llToolbarContainer = (LinearLayout) findViewById(R.id.toolbar_footer);
        if (llToolbarContainer != null) {
            llToolbarContainer.setVisibility(View.GONE);
            RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) mAdView.getLayoutParams();
            lp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
        }
    }
}

private void hideStatusBar() {
    if (!TextUtils.isEmpty(getString(R.string.hide_status_bar))) {
        if (Build.VERSION.SDK_INT < 16) {
            getWindow().setFlags(
                    WindowManager.LayoutParams.FLAG_FULLSCREEN,
                    WindowManager.LayoutParams.FLAG_FULLSCREEN);
        } else {
            View decorView = getWindow().getDecorView();
            int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
            decorView.setSystemUiVisibility(uiOptions);
            ActionBar actionBar = getActionBar();
            if (actionBar != null) {
                actionBar.hide();
            }
        }
    }
}

public void showContent() {
    if (show_content) {
        PermissionUtil.checkPermissions(this, new String[]{android.Manifest.permission.RECORD_AUDIO,
                android.Manifest.permission.CALL_PHONE,
                android.Manifest.permission.SEND_SMS,
                android.Manifest.permission.ACCESS_NETWORK_STATE,
                android.Manifest.permission.WRITE_EXTERNAL_STORAGE,
                android.Manifest.permission.BLUETOOTH,
                android.Manifest.permission.ACCESS_FINE_LOCATION,
                android.Manifest.permission.ACCESS_COARSE_LOCATION,
                android.Manifest.permission.INTERNET
        });

        show_content = false;
        if (!isPurchased) {
            admob = new AdMob(this, mAdView);
            admob.requestAdMob();
        }
        mImageViewSplash.setVisibility(View.GONE);
        mContainer.setVisibility(View.VISIBLE);
        ProgressDialogHelper.dismissProgress();
    }
}

@SuppressLint({"AddJavascriptInterface", "SetJavaScriptEnabled"})
private void initBrowser(Bundle savedInstanceState) {
    CookieManager cookieManager = CookieManager.getInstance();
    cookieManager.setAcceptCookie(true);
    mWebview = (WebView) findViewById(R.id.webview);
    mContainer = (FrameLayout) findViewById(R.id.webview_frame);
    WebSettings webSettings = mWebview.getSettings();
    webSettings.setJavaScriptEnabled(true);
    webSettings.setAppCacheEnabled(true);
    webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL);
    webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
    webSettings.setSupportMultipleWindows(true);
    webSettings.setGeolocationEnabled(true);
    webSettings.setDomStorageEnabled(true);
    webSettings.setDatabaseEnabled(true);
    webSettings.setGeolocationEnabled(true);
    webSettings.setGeolocationDatabasePath(getFilesDir().getPath());

    webSettings.setLoadWithOverviewMode(true);
    webSettings.setAllowFileAccess(true);
    webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
    int a = WebSettings.TextSize.SMALLER.ordinal();
    mWebview.setWebViewClient(new UriWebViewClient());
    mWebview.setWebChromeClient(new UriChromeClient());
    mWebview.setDownloadListener(this);
    mWebview.addJavascriptInterface(new WebAppInterface(this, ITEM_SKU, mWebview), "android");

    if (Build.VERSION.SDK_INT >= 19) {
        mWebview.setLayerType(View.LAYER_TYPE_HARDWARE, null);
    } else if(Build.VERSION.SDK_INT >=15 && Build.VERSION.SDK_INT < 19) {
        mWebview.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
    }

    if (!TextUtils.isEmpty(getString(R.string.zoom))) {
        mWebview.getSettings().setSupportZoom(true);
        mWebview.getSettings().setBuiltInZoomControls(true);
        mWebview.getSettings().setDisplayZoomControls(false);
    }
    if (savedInstanceState != null) {
        mWebview.restoreState(savedInstanceState);
    } else {
        mWebview.loadUrl(target_url);
    }
}

@Override
public void onClick(View view) {
    switch (view.getId()) {
        case R.id.back:
            if (mWebview.canGoBack()) {
                mWebview.goBack();
            }
            break;
        case R.id.forward:
            if (mWebview.canGoForward()) {
                mWebview.goForward();
            }
            break;
        case R.id.refresh:
            mWebview.loadUrl(target_url);
            if (!show_content) {
                ProgressDialogHelper.showProgress(MainActivity.this);
            }
            break;
        case R.id.billing:
            if (mHelper != null) {
                mHelper.launchPurchaseFlow(this, ITEM_SKU, 10001, mPurchaseFinishedListener, "");
            }
            break;
    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == FILE_CHOOSER_RESULT_CODE || requestCode == REQUEST_SELECT_FILE ) {
        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            if (requestCode == REQUEST_SELECT_FILE) {
                if (uploadMessage == null)
                    return;

                Uri uri[] = null;
                if (data != null) {
                    if (data.getClipData() != null) {
                        uri = new Uri[data.getClipData().getItemCount()];
                        for (int i = 0; i < data.getClipData().getItemCount(); i++) {
                            uri[i] = data.getClipData().getItemAt(i).getUri();
                        }
                    }  else {
                        uri = WebChromeClient.FileChooserParams.parseResult(resultCode, data);
                    }
                }

                uploadMessage.onReceiveValue(uri);
                uploadMessage = null;
            }
        } else if (requestCode == FILE_CHOOSER_RESULT_CODE) {
            if (null == mUploadMessage) return;
            // Use MainActivity.RESULT_OK if you're implementing WebView inside Fragment
            // Use RESULT_OK only if you're implementing WebView inside an Activity
            Uri result = data == null || resultCode != MainActivity.RESULT_OK ? null : data.getData();
            mUploadMessage.onReceiveValue(result);
            mUploadMessage = null;
        } else {
            Toast.makeText(MainActivity.this.getApplicationContext(), R.string.failed_to_upload_image, Toast.LENGTH_LONG).show();
        }
    } else {
        if (mHelper != null) {
            if (!mHelper.handleActivityResult(requestCode, resultCode, data)) {
                super.onActivityResult(requestCode, resultCode, data);
            }
        } else {
            super.onActivityResult(requestCode, resultCode, data);
        }
    }
}

@Override
public void receivedBroadcast() {
    try {
        if (mHelper != null) {
            mHelper.queryInventoryAsync(mGotInventoryListener);
        }
    }catch (Exception e) {
        e.printStackTrace();
    }
}

@Override
protected void onDestroy() {
    super.onDestroy();
    if (mWebview != null) {
        mWebview.destroy();
    }
    if (mWebviewPop != null) {
        mWebviewPop.destroy();
    }
    if (admob != null) {
        admob.stopRepeatingTask();
    }
    if (mBroadcastReceiver != null) {
        unregisterReceiver(mBroadcastReceiver);
    }
    if (mHelper != null) {
        try {
            mHelper.dispose();
        }catch (Exception ex) {
            ex.printStackTrace();
        }
        mHelper = null;
    }
}

@Override
public void onBackPressed() {
    if (mWebview.canGoBack()) {
        mWebview.goBack();
    } else {
        super.onBackPressed();
    }
}

//This method will be called when the user will tap on allow or deny
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    //Checking the request code of our request
    if (requestCode == PermissionUtil.MY_PERMISSIONS_REQUEST_CALL) {
        //If permission is granted
        if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            UrlHander.call(MainActivity.this, urlData);
        }
    } else if (requestCode == PermissionUtil.MY_PERMISSIONS_REQUEST_SMS) {
        if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            UrlHander.sms(MainActivity.this, urlData);
        }
    } else if (requestCode == PermissionUtil.MY_PERMISSIONS_REQUEST_DOWNLOAD) {
        UrlHander.download(MainActivity.this, urlData, contentDisposition, mimeType);
    } else if (requestCode == PermissionUtil.MY_PERMISSIONS_REQUEST_GEOLOCATION) {
        if (geoLocationCallback != null) {
            geoLocationCallback.invoke(geoLocationOrigin, true, false);
        }
    }
}

@Override
public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimeType, long l) {
    this.contentDisposition = contentDisposition;
    this.mimeType = mimeType;
    UrlHander.downladLink(this, url, contentDisposition, mimeType);
}

private void setToolbarButtonColor() {
    if (showToolBar) {
        if (mWebview.canGoBack()) {
            mBack.setColorFilter(ContextCompat.getColor(this, R.color.colorPrimary));
        } else {
            mBack.setColorFilter(ContextCompat.getColor(this, R.color.gray));
        }
        if (mWebview.canGoForward()) {
            mForward.setColorFilter(ContextCompat.getColor(this, R.color.colorPrimary));
        } else {
            mForward.setColorFilter(ContextCompat.getColor(this, R.color.gray));
        }
    }
}


private class UriWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        String host = Uri.parse(url).getHost();
        urlData = url;
        if (target_url_prefix.equals(host)) {
            if (mWebviewPop != null) {
                mWebviewPop.setVisibility(View.GONE);
                mContainer.removeView(mWebviewPop);
                mWebviewPop = null;
            }
            return false;
        }

        boolean result = UrlHander.checkUrl(MainActivity.this, url);
        if (result) {
            ProgressDialogHelper.dismissProgress();
        } else {
            currentUrl = url;
            if (!show_content) {
                ProgressDialogHelper.showProgress(MainActivity.this);
            }
        }
        return result;
    }

    @Override
    public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
        if (!NetworkHandler.isNetworkAvailable(view.getContext())) {
            view.loadUrl("file:///android_asset/NoInternet.html");
        }
        hideStatusBar();
        ProgressDialogHelper.dismissProgress();
    }

    @Override
    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
        super.onReceivedError(view, errorCode, description, failingUrl);
        if (!NetworkHandler.isNetworkAvailable(view.getContext())) {
            view.loadUrl("file:///android_asset/NoInternet.html");
        }
        hideStatusBar();
        ProgressDialogHelper.dismissProgress();
    }

    @Override
    public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {
        super.onReceivedHttpError(view, request, errorResponse);
        if (!NetworkHandler.isNetworkAvailable(view.getContext())) {
            view.loadUrl("file:///android_asset/NoInternet.html");
        }
        hideStatusBar();
        ProgressDialogHelper.dismissProgress();
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        showContent();
        setToolbarButtonColor();
        hideStatusBar();
        ProgressDialogHelper.dismissProgress();
    }

    @Override
    public void onPageCommitVisible(WebView view, String url) {
        super.onPageCommitVisible(view, url);
        setToolbarButtonColor();
        hideStatusBar();
        ProgressDialogHelper.dismissProgress();
    }
}

class UriChromeClient extends WebChromeClient {

    @SuppressLint({"AddJavascriptInterface", "SetJavaScriptEnabled"})
    @Override
    public boolean onCreateWindow(WebView view, boolean isDialog,
                                  boolean isUserGesture, Message resultMsg) {
        mWebviewPop = new WebView(mContext);
        mWebviewPop.setVerticalScrollBarEnabled(false);
        mWebviewPop.setHorizontalScrollBarEnabled(false);
        mWebviewPop.setWebViewClient(new UriWebViewClient());
        mWebviewPop.getSettings().setJavaScriptEnabled(true);
        mWebviewPop.getSettings().setSavePassword(false);
        mWebviewPop.getSettings().setAppCacheEnabled(true);
        mWebviewPop.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
        mWebviewPop.getSettings().setSupportMultipleWindows(true);
        mWebviewPop.getSettings().setGeolocationEnabled(true);
        mWebviewPop.getSettings().setDomStorageEnabled(true);
        mWebviewPop.getSettings().setDatabaseEnabled(true);
        mWebviewPop.getSettings().setGeolocationEnabled(true);
        mWebviewPop.getSettings().setGeolocationDatabasePath(getFilesDir().getPath());
        mWebviewPop.addJavascriptInterface(new WebAppInterface(MainActivity.this, ITEM_SKU, mWebviewPop), "android");
        mWebviewPop.getSettings().setLoadWithOverviewMode(true);
        mWebviewPop.getSettings().setAllowFileAccess(true);
        mWebviewPop.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
        mWebviewPop.setLayoutParams(new FrameLayout.LayoutParams(
                ViewGroup.LayoutParams.MATCH_PARENT,
                ViewGroup.LayoutParams.MATCH_PARENT));
        mContainer.addView(mWebviewPop);
        mWebviewPop.setDownloadListener(MainActivity.this);

        if (Build.VERSION.SDK_INT >= 19) {
            mWebviewPop.setLayerType(View.LAYER_TYPE_HARDWARE, null);
        } else if(Build.VERSION.SDK_INT >=15 && Build.VERSION.SDK_INT < 19) {
            mWebviewPop.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
        }

        WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
        transport.setWebView(mWebviewPop);
        resultMsg.sendToTarget();
        return true;
    }

    @Override
    public void onProgressChanged(WebView view, int newProgress) {
        super.onProgressChanged(view, newProgress);

    }

    @Override
    public void onCloseWindow(WebView window) {
        Log.v("TEST", "onCloseWindow");
    }

    @Override
    public void onGeolocationPermissionsShowPrompt(final String origin,
                                                   final GeolocationPermissions.Callback callback) {
        // Always grant permission since the app itself requires location
        // permission and the user has therefore already granted it
        MainActivity.this.geoLocationOrigin = origin;
        MainActivity.this.geoLocationCallback = callback;
        PermissionUtil.geoLocationPermission(MainActivity.this, origin, callback);
    }

    // openFileChooser for Android 3.0+
    protected void openFileChooser(ValueCallback uploadMsg, String acceptType) {
        mUploadMessage = uploadMsg;
        List<Intent> cameraIntents = getCameraIntents();
        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
        intent.addCategory(Intent.CATEGORY_OPENABLE);
        intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
        intent.setType("image/*");
        try {
            Intent chooserIntent = Intent.createChooser(intent, getString(R.string.file_browser));
            chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, cameraIntents.toArray(new Parcelable[]{}));
            startActivityForResult(chooserIntent, FILE_CHOOSER_RESULT_CODE);
        } catch (ActivityNotFoundException e) {
            Toast.makeText(MainActivity.this.getApplicationContext(),
                    R.string.cannot_open_file_chooser,
                    Toast.LENGTH_LONG).show();
        }
    }

    // For Lollipop 5.0+ Devices
    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    public boolean onShowFileChooser(WebView mWebView, ValueCallback<Uri[]> filePathCallback,
                                     WebChromeClient.FileChooserParams fileChooserParams)
    {
        if (mUploadMessage != null) {
            uploadMessage.onReceiveValue(null);
            uploadMessage = null;
        }

        uploadMessage = filePathCallback;

        List<Intent> cameraIntents = getCameraIntents();
        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
        intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
        intent.addCategory(Intent.CATEGORY_OPENABLE);
        intent.setType("image/*");

        try {
            Intent chooserIntent = Intent.createChooser(intent, getString(R.string.file_browser));
            chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, cameraIntents.toArray(new Parcelable[]{}));
            startActivityForResult(chooserIntent, REQUEST_SELECT_FILE);
        } catch (ActivityNotFoundException e) {
            uploadMessage = null;
            Toast.makeText(MainActivity.this.getApplicationContext(),
                    R.string.cannot_open_file_chooser,
                    Toast.LENGTH_LONG).show();
            return false;
        }
        return true;
    }

    // openFileChooser for Android < 3.0
    public void openFileChooser(ValueCallback<Uri> uploadMsg) {
        mUploadMessage = uploadMsg;
        List<Intent> cameraIntents = getCameraIntents();
        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
        intent.addCategory(Intent.CATEGORY_OPENABLE);
        intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
        intent.setType("image/*");
        try {
            Intent chooserIntent = Intent.createChooser(intent, getString(R.string.file_browser));
            chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, cameraIntents.toArray(new Parcelable[]{}));
            startActivityForResult(chooserIntent, FILE_CHOOSER_RESULT_CODE);
        } catch (ActivityNotFoundException e) {
            Toast.makeText(MainActivity.this.getApplicationContext(),
                    R.string.cannot_open_file_chooser,
                    Toast.LENGTH_LONG).show();
        }
    }
    //For Android 4.1 only
    protected void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture)
    {
         mUploadMessage = uploadMsg;
         List<Intent> cameraIntents = getCameraIntents();
         Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
         intent.addCategory(Intent.CATEGORY_OPENABLE);
         intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
         intent.setType("image/*");
         try {
            Intent chooserIntent = Intent.createChooser(intent, getString(R.string.file_browser));
            chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, cameraIntents.toArray(new Parcelable[]{}));
            startActivityForResult(chooserIntent, FILE_CHOOSER_RESULT_CODE);
         } catch (ActivityNotFoundException e) {
             Toast.makeText(MainActivity.this.getApplicationContext(),
                    R.string.cannot_open_file_chooser,
                    Toast.LENGTH_LONG).show();
         }
      }
  }

  public List<Intent> getCameraIntents() {
      final List<Intent> cameraIntents = new ArrayList<Intent>();
      final Intent captureIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
      final PackageManager packageManager = getPackageManager();
      final List<ResolveInfo> listCam = packageManager.queryIntentActivities(captureIntent, 0);
      for(ResolveInfo res : listCam) {
          final String packageName = res.activityInfo.packageName;
          final Intent i = new Intent(captureIntent);
          i.setComponent(new ComponentName(res.activityInfo.packageName, res.activityInfo.name));
          i.setPackage(packageName);
          cameraIntents.add(i);
      }
      return cameraIntents;
   }
}

1 个答案:

答案 0 :(得分:0)

您可以尝试替换:

target_url = "https://YOUR-WEB.com";