मैं एक एंड्रॉइड ऐप विकसित कर रहा हूं। असल में यह WebView
और प्रगतिबार है। फेसबुक की मोबाइल साइट (m.facebook.com) WebView
में लोड की गई है।एंड्रॉइड वेबव्यू फ़ाइल अपलोड करें
जब मैं कोई छवि अपलोड करने के लिए फ़ाइल चुनें बटन पर क्लिक करता हूं, तो कुछ भी नहीं होता है। मैंने सभी समाधानों का प्रयास किया है और उनमें से कोई भी काम नहीं करता है। मैं एक गैलेक्सी नोट (जीटी-एन 7000) पर 4.0.3 चल रहा हूं। मेरे न्यूनतम SDK संस्करण संस्करण 8.
यहाँ अधिक जानकारी के लिए मेरी कोड है ...
public class IStyla extends Activity {
private ValueCallback<Uri> mUploadMessage;
private final static int FILECHOOSER_RESULTCODE = 1;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == FILECHOOSER_RESULTCODE) {
if (null == mUploadMessage)
return;
Uri result = intent == null || resultCode != RESULT_OK ? null
: intent.getData();
mUploadMessage.onReceiveValue(result);
mUploadMessage = null;
}
}
private class MyWebChromeClient extends WebChromeClient {
public void openFileChooser(ValueCallback<Uri> uploadMsg) {
mUploadMessage = uploadMsg;
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("image/*");
IStyla.this.startActivityForResult(Intent.createChooser(i, "Image Browser"), FILECHOOSER_RESULTCODE);
}
@Override
public boolean onJsAlert(WebView view, String url, String message,final JsResult result) {
//handle Alert event, here we are showing AlertDialog
new AlertDialog.Builder(IStyla.this)
.setTitle("JavaScript Alert !")
.setMessage(message)
.setPositiveButton(android.R.string.ok,
new AlertDialog.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// do your stuff
result.confirm();
}
}).setCancelable(false).create().show();
return true;
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_istyla);
WebView webView = (WebView) findViewById(R.id.webView1);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webView.setWebChromeClient(new MyWebChromeClient(){
public void onProgressChanged(WebView view, int progress) {
// Activities and WebViews measure progress with different scales.
// The progress meter will automatically disappear when we reach 100%
ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressBar1);
if(progress < 100 && progressBar.getVisibility() == ProgressBar.GONE){
progressBar.setVisibility(ProgressBar.VISIBLE);
}
progressBar.setProgress(progress);
if(progress == 100) {
progressBar.setVisibility(ProgressBar.GONE);
}
}
public void openFileChooser(ValueCallback<Uri> uploadMsg) {
mUploadMessage = uploadMsg;
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("image/*");
IStyla.this.startActivityForResult(Intent.createChooser(i, "Image Browser"), FILECHOOSER_RESULTCODE);
}
});
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressBar1);
progressBar.setVisibility(ProgressBar.VISIBLE);
return true;
}
});
webView.loadUrl("https://m.facebook.com");
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK){
if(((WebView)findViewById(R.id.webView1)).canGoBack()){
((WebView)findViewById(R.id.webView1)).goBack();
return true;
}
}
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_istyla, menu);
return true;
}
}
धन्यवाद
शायद तुम, permisions की जरूरत की तरह [READ_EXTERNAL_STORAGE] (http://developer.android.com/reference/android/Manifest.permission.html#READ_EXTERNAL_STORAGE) – neworld
मैं जोड़ लिया है कुछ अनुमति है, लेकिन यह अभी भी काम नहीं करता है । मैंने उपरोक्त अपना कोड जोड़ा है। –
http://stackoverflow.com/questions/5907369/file-upload-in-webview –