2017-10-28 134 views

回答

0

添加在的Manifest.xml:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

的Android版本高于M你要问的权限,我指的是这样一个问题:

Link

0

在网页流量您不需要任何许可。

public class MainActivity extends AppCompatActivity { 

    private static final int INPUT_FILE_REQUEST_CODE = 1; 
    private static final int FILECHOOSER_RESULTCODE = 1; 
    private static final String TAG = MainActivity.class.getSimpleName(); 
    Context context; 
    WebView webView; 
    private WebSettings webSettings; 
    private ValueCallback<Uri> mUploadMessage; 
    private Uri mCapturedImageURI = null; 
    private ValueCallback<Uri[]> mFilePathCallback; 
    private String mCameraPhotoPath; 

    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
      if (requestCode != INPUT_FILE_REQUEST_CODE || mFilePathCallback == null) { 
       super.onActivityResult(requestCode, resultCode, data); 
       return; 
      } 
      Uri[] results = null; 
      // Check that the response is a good one 
      if (resultCode == Activity.RESULT_OK) { 
       if (data == null) { 
        // If there is not data, then we may have taken a photo 
        if (mCameraPhotoPath != null) { 
         results = new Uri[]{Uri.parse(mCameraPhotoPath)}; 
        } 
       } else { 
        String dataString = data.getDataString(); 
        if (dataString != null) { 
         results = new Uri[]{Uri.parse(dataString)}; 
        } 
       } 
      } 
      mFilePathCallback.onReceiveValue(results); 
      mFilePathCallback = null; 
     } else if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT) { 
      if (requestCode != FILECHOOSER_RESULTCODE || mUploadMessage == null) { 
       super.onActivityResult(requestCode, resultCode, data); 
       return; 
      } 
      if (requestCode == FILECHOOSER_RESULTCODE) { 
       if (null == this.mUploadMessage) { 
        return; 
       } 
       Uri result = null; 
       try { 
        if (resultCode != RESULT_OK) { 
         result = null; 
        } else { 
         // retrieve from the private variable if the intent is null 
         result = data == null ? mCapturedImageURI : data.getData(); 
        } 
       } catch (Exception e) { 
        Toast.makeText(getApplicationContext(), "activity :" + e, 
          Toast.LENGTH_LONG).show(); 
       } 
       mUploadMessage.onReceiveValue(result); 
       mUploadMessage = null; 
      } 
     } 
     return; 
    } 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     context = this; 
     webView = (WebView) findViewById(R.id.salonid); 
     WebSettings settings = webView.getSettings(); 
     settings.setJavaScriptEnabled(true); 
     webView.loadUrl("Paste_your_url"); 
     webView.setWebChromeClient(new ChromeClient()); 
     webView.setWebViewClient(new WebViewClient() { 

      @Override 
      public void onPageFinished(WebView view, String url) { 
       super.onPageFinished(view, url); 

       Log.w("----------", "pageee finish : " + url); 
      } 

      public void onReceivedError(WebView webView, int errorCode, String description, String failingUrl) { 
       try { 
        webView.stopLoading(); 
       } catch (Exception e) { 
       } 
       if (webView.canGoBack()) { 
        webView.goBack(); 
       } 
       webView.loadUrl("about:blank"); 
       AlertDialog alertDialog = new AlertDialog.Builder(context).create(); 
       alertDialog.setTitle("Error"); 
       alertDialog.setCancelable(false); 
       alertDialog.setMessage("Check your internet connection and try again."); 
       alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, "Try Again", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int which) { 
         startActivity(getIntent()); 
         finish(); 
        } 
       }); 
       alertDialog.show(); 
       super.onReceivedError(webView, errorCode, description, failingUrl); 
      } 
     }); 
    } 

    private File createImageFile() throws IOException { 
     // Create an image file name 
     String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 
     String imageFileName = "JPEG_" + timeStamp + "_"; 
     File storageDir = Environment.getExternalStoragePublicDirectory(
       Environment.getExternalStorageState()); 
     File imageFile = File.createTempFile(
       imageFileName, /* prefix */ 
       ".jpg",   /* suffix */ 
       storageDir  /* directory */ 
     ); 
     return imageFile; 
    } 

    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     // Check if the key event was the Back button and if there's history 
     if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) { 
      webView.goBack(); 
      return true; 
     } 
     // If it wasn't the Back key or there's no web page history, bubble up to the default 
     // system behavior (probably exit the activity) 
     return super.onKeyDown(keyCode, event); 
    } 

    @Override 
    public void onBackPressed() { 
     super.onBackPressed(); 
    } 

    public class ChromeClient extends WebChromeClient { 
     // For Android 5.0 

     public boolean onShowFileChooser(WebView view, ValueCallback<Uri[]> filePath, WebChromeClient.FileChooserParams fileChooserParams) { 
      // Double check that we don't have any existing callbacks 
      if (mFilePathCallback != null) { 
       mFilePathCallback.onReceiveValue(null); 
      } 
      mFilePathCallback = filePath; 
      Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
/* 
      if (takePictureIntent.resolveActivity(getPackageManager()) != null) { 
       // Create the File where the photo should go 
       File photoFile = null; 
       try { 
        photoFile = createImageFile(); 
        takePictureIntent.putExtra("PhotoPath", mCameraPhotoPath); 
       } catch (IOException ex) { 
        // Error occurred while creating the File 
        Log.e(TAG, "Unable to create Image File", ex); 
       } 
       // Continue only if the File was successfully created 
       if (photoFile != null) { 
        mCameraPhotoPath = "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("image/*"); 
      contentSelectionIntent.setType("*/*"); 
      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, "Image Chooser"); 
      chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, intentArray); 
      startActivityForResult(chooserIntent, INPUT_FILE_REQUEST_CODE); 
      return true; 
     } 

     // openFileChooser for Android 3.0+ 
     public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType) { 
      mUploadMessage = uploadMsg; 
      // Create AndroidExampleFolder at sdcard 
      // Create AndroidExampleFolder at sdcard 
      File imageStorageDir = new File(
        Environment.getExternalStoragePublicDirectory(
          Environment.DIRECTORY_DOCUMENTS) 
        , "AndroidExampleFolder"); 
      if (!imageStorageDir.exists()) { 
       // Create AndroidExampleFolder at sdcard 
       imageStorageDir.mkdirs(); 
      } 
      // Create camera captured image file path and name 
      File file = new File(
        imageStorageDir + File.separator + "IMG_" 
          + String.valueOf(System.currentTimeMillis()) 
          + ".jpg"); 
      mCapturedImageURI = Uri.fromFile(file); 
      // Camera capture image intent 
      final Intent captureIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
      captureIntent.putExtra(MediaStore.EXTRA_OUTPUT, mCapturedImageURI); 
      Intent i = new Intent(Intent.ACTION_GET_CONTENT); 
      i.addCategory(Intent.CATEGORY_OPENABLE); 
      i.setType("text/*"); 
      // Create file chooser intent 
      Intent chooserIntent = Intent.createChooser(i, "Image Chooser"); 
      // Set camera intent to file chooser 
      chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS 
        , new Parcelable[]{captureIntent}); 
      // On select image call onActivityResult method of activity 
      startActivityForResult(chooserIntent, FILECHOOSER_RESULTCODE); 
     } 

     // openFileChooser for Android < 3.0 
     public void openFileChooser(ValueCallback<Uri> uploadMsg) { 
      openFileChooser(uploadMsg, ""); 
     } 

     //openFileChooser for other Android versions 
     public void openFileChooser(ValueCallback<Uri> uploadMsg, 
            String acceptType, 
            String capture) { 
      openFileChooser(uploadMsg, acceptType); 
     } 
    } 
} 
+0

我已经创建了一个空白的活动并将代码粘贴到mainactivity.java中...还有什么我必须做的?我也把网址。 –

+0

在xml文件中创建WebView在您的Java类中添加webview。请在mainactivity java类中粘贴代码后提供您的问题。 –