|
|
|
สอบถามเรื่อง webview android หน่อยครับ ทั้งอัพโหลด และดาวน์โหลด |
|
|
|
|
|
|
|
public class ConnectServer extends Activity{
final Activity activity = this;
private ValueCallback<Uri> mUploadMessage;
private final static int FILECHOOSER_RESULTCODE=1;
private WebView webView;
private static final int MENU_BACK = 1;
protected static final String TAG = null;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
setContentView(R.layout.webview);
WebView webView = (WebView) findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setPluginState(WebSettings.PluginState.ON);
webView.getSettings().setPluginsEnabled(true);
webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR);
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setAppCacheEnabled(true);
webView.getSettings().setDatabaseEnabled(true);
webView.getSettings().setGeolocationDatabasePath("/data/data/<my-app>");
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setSupportZoom(false);
webSettings.setAllowFileAccess(true);
//webSettings.setLoadsImagesAutomatically(true);
webSettings.setSavePassword(false);
webSettings.setSaveFormData(false);
webSettings.setJavaScriptEnabled(true);
webSettings.setSaveFormData(true);
webView.setDownloadListener(new DownloadListener() {
public void onDownloadStart(String url, String userAgent,
String contentDisposition, String mimetype,
long contentLength) {
Intent intent = new Intent(Intent.ACTION_VIEW);
// intent.setType("application/x-rar-compressed");
intent.setData(Uri.parse(url));
startActivity(intent);
}
});
getWindow().setFlags( WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
//run your normal code path here
webView.setWebChromeClient(new WebChromeClient() {
// public void onGeolocationPermissionsShowPrompt(final String origin, final GeolocationPermissions.Callback callback) {
// Log.i(TAG, "onGeolocationPermissionsShowPrompt()");
//
// final boolean remember = false;
// AlertDialog.Builder builder = new AlertDialog.Builder(getBaseContext());
// builder.setTitle("Locations");
// builder.setMessage("Would like to use your Current Location ")
// .setCancelable(true).setPositiveButton("Allow", new DialogInterface.OnClickListener() {
// public void onClick(DialogInterface dialog, int id) {
// // origin, allow, remember
// callback.invoke(origin, true, remember);
// }
// }).setNegativeButton("Don't Allow", new DialogInterface.OnClickListener() {
// public void onClick(DialogInterface dialog, int id) {
// // origin, allow, remember
// callback.invoke(origin, false, remember);
// }
// });
// AlertDialog alert = builder.create();
// alert.show();
// }
//The undocumented magic method override
//Eclipse will swear at you if you try to put @Override here
public void openFileChooser(ValueCallback<Uri> uploadMsg) {
mUploadMessage = uploadMsg;
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("image/*");
i.setType(AUDIO_SERVICE);
i.setType(STORAGE_SERVICE);
i.setType("text/*");
i.setType(DOWNLOAD_SERVICE);
ConnectServer.this.startActivityForResult(Intent.createChooser(i,"File Chooser"), FILECHOOSER_RESULTCODE);
}
public void onProgressChanged(WebView view, int progress)
{
activity.setTitle("กำลังโหลด...");
activity.setProgress(progress * 100);
if(progress == 100)
activity.setTitle(R.string.app_name);
}
});
webView.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)
{
// Handle the error
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
List<ResolveInfo> infos = getPackageManager().queryIntentActivities(intent, 0);
if (infos.size() == 0) {
// apparently nothing can handle this URL
return false;
}
for (ResolveInfo info : infos) {
if (info.activityInfo.packageName.equals("app.project.lecturenote")) {
view.loadUrl(url);
return true;
}
}
startActivity(intent);
return true;
}
});
webView.loadUrl("http://xxx.xxx.x.xx/xxx.php");
webView.getSettings().setBuiltInZoomControls(true);
}
public void downloadfileto(String fileurl, String filename) {
String myString;
try {
FileOutputStream f = new FileOutputStream(filename);
try {
URL url = new URL(fileurl);
URLConnection urlConn = url.openConnection();
InputStream is = urlConn.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is, 8000);
int current = 0;
while ((current = bis.read()) != -1) {
f.write((byte) current);
}
} catch (Exception e) {
myString = e.getMessage();
}
f.flush();
f.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url != null && url.startsWith("market://")) {
view.getContext().startActivity(
new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
return true;
} else {
return false;
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
if (requestCode == FILECHOOSER_RESULTCODE) {
if (null == mUploadMessage)
return;
Uri result = intent == null || resultCode != RESULT_OK ? null
: intent.getData();
mUploadMessage.onReceiveValue(result);
mUploadMessage = null;
// TODO Auto-generated method stub
}
}
// @Override
// public boolean onCreateOptionsMenu(Menu menu) {
// super.onCreateOptionsMenu(menu);
// menu.add(0, 1, 0, "Back").setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
// menu.add(0, 2, 0, "Refresh").setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
// menu.add(0, 3, 0, "Forward").setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
// return true;
// }
//
// @Override
// public boolean onOptionsItemSelected(MenuItem item) {
// switch (item.getItemId()){
// case 1: //If the ID equals 1, go back
// webView.goBack();
// return true;
// case 2 : //If the ID equals 2, refresh
// webView.reload();
// return true;
// case 3: //If the ID equals 3, go forward
// webView.goForward();
// return true;
// }
// return false;
// }
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
webView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
class MyWebChromeClient extends WebChromeClient {
// The undocumented magic method override
// Eclipse will swear at you if you try to put @Override here
public void openFileChooser(ValueCallback<Uri> uploadMsg) {
mUploadMessage = uploadMsg;
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("image/*");
ConnectServer.this.startActivityForResult(
Intent.createChooser(i, "Image Browser"),
FILECHOOSER_RESULTCODE);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, MENU_BACK, 0, "back")
.setTitleCondensed("กลับ")
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case MENU_BACK:
finish();
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
}
ผมเซ็ตมั่วไปแล้วครับ หาตัวไหนก้อไม่ได้สักตัว ช่วยหน่อยนะครับ
|
|
|
|
|
Date :
2012-10-06 17:05:28 |
By :
ronard |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมไม่แน่ใจว่า File Upload บน Android จะแสดงบน WebView หรือเปล่าครับ เพราะมันใช้ความสามารถของ Web Browser ครับ (ใน iOS เพิ่งจะมีใน iOS6)
ส่วนจะ Upload จาก SD Card ลองดูบทความนี้ครับ
Go to : Android Upload Send file to Web Server (Website)
|
|
|
|
|
Date :
2012-10-06 20:30:04 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถ้าเป็น android 4.0 จะมีมั้ยครับ ดูยังไงเหรอครับ
และความสามารถของ Web Browser ใน iOS เป็นยังไงหรือครับ ดูยังไงอะครับ
|
|
|
|
|
Date :
2012-10-06 21:40:30 |
By :
ronard |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองเปิด Web Browser บน Android ดูครับ แล้วเปิดเว็บที่มีการอัพโหลดว่าสามารถคลิกได้หรือเปล่า
|
|
|
|
|
Date :
2012-10-06 21:45:15 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Web Browser ของ Android ทำได้ครับ ที่มากับเครื่องทำได้ครับ
|
|
|
|
|
Date :
2012-10-06 21:55:30 |
By :
ronard |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ในเครื่อง Emulator ทำได้หรือเปล่าครับ
|
|
|
|
|
Date :
2012-10-06 21:56:31 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ในเครื่องจริง tab 8รับ
ในเครื่อง emulator ครับ
|
ประวัติการแก้ไข 2012-10-09 00:07:47
|
|
|
|
Date :
2012-10-06 22:33:16 |
By :
ronard |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
การอัพโหลดเมื่อคลิกปุ่ม browse จะเป็นดังรูปข้างบนเหมือนกันทั้งสอง ทั้ง emu และเครื่องจริงครับ
ส่วนการดาวน์โหลดนั้นทั้งใน emu และเครื่องจริงสามารถดาวนืโหลดได้ครับ แต่ผม set ให้มันดาวน์โหลดไม่ได้ครับ ทำยังไงครับ
|
|
|
|
|
Date :
2012-10-06 22:37:19 |
By :
ronard |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณครับ mr.win เด๋วผมจะลองทำดูก่อนครับ ถ้าได้ ไม่ได้ยังไงจะมาบอกอีกทีครับ
|
|
|
|
|
Date :
2012-10-07 16:59:56 |
By :
ronard |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ได้ยังไงเขียนวิธีไว้ด้วยก็ดีครับ
|
|
|
|
|
Date :
2012-10-07 20:39:12 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 02
|