제가 Stack Overflow에서 검색해서 구현해봤는데요... 계속 뭔가 잘못됫다고 뜨거든요 ㅠㅠ
(http://stackoverflow.com/questions/3449098/enable-longclick-in-webview
아래는 문제의 소스입니다.
package랑 inport는 생략했습니다.
어디가 어떻게 잘못되었고, 해경 방법좀 알려주시면 감사하겠습니다 ㅠ
public class Enha extends Activity {
final int ENHA = Menu.FIRST;
// 생략
WebView enhaView;
@SuppressWarnings("deprecation")
@SuppressLint("SetJavaScriptEnabled")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
startActivity(new Intent(this, SplashActivity.class));
setContentView(R.layout.main);
Toast.makeText(this, "버젼 : 1.4.1\n메뉴의 설문조사를 진행해주세요.", Toast.LENGTH_SHORT).show();
enhaView = (WebView) findViewById(R.id.webview);
enhaView.getSettings().setJavaScriptEnabled(true);
enhaView.getSettings().setBuiltInZoomControls(true);
enhaView.getSettings().setSupportZoom(true);
enhaView.getSettings().setAllowFileAccess(true);
enhaView.getSettings().setPluginState(PluginState. ON);
enhaView.setWebChromeClient(new WebChromeClient());
enhaView.loadUrl("http://m.enha.kr/wiki/FrontPage");
String curURL = enhaView.getUrl();
enhaView.setWebViewClient(new EnhaWebViewClient());
Button btnBack = (Button)findViewById(R.id.button1);
Button btnForward = (Button)findViewById(R.id.button2);
Button mainBtn = (Button)findViewById(R.id.button3);
btnBack.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
if(enhaView.canGoBack()){
enhaView.goBack();
}
}
});
btnForward.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
if(enhaView.canGoForward()){
enhaView.goForward();
}
}
});
mainBtn.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
if(enhaView.canGoBack()){
enhaView.loadUrl("http://m.enha.kr/wiki/FrontPage");
enhaView.setWebViewClient(new EnhaWebViewClient());
}
}
});
// -------
enhaView.registerForContextMenu(enhaView);
}
@Override
protected void onCreateContextMenu(ContextMenu menu) {
super.onCreateContextMenu(menu);
HitTestResult result = getHitTestResult();
MenuItem.OnMenuItemClickListener handler = new MenuItem.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
// do the menu action
}
};
if (result.getType() == HitTestResult.IMAGE_TYPE ||
result.getType() == HitTestResult.SRC_IMAGE_ANCHOR_TYPE) {
menu.setHeaderTitle(result.getExtra());
menu.add(0, ID_SAVEIMAGE, 0, "Save Image").setOnMenuItemClickListener(handler);
}
}
HitTestResult result = getHitTestResult();
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet(result.getExtra());
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
if (entity != null) {
URL url = new URL(result.getExtra());
//Grabs the file part of the URL string
String fileName = url.getFile();
//Make sure we are grabbing just the filename
int index = fileName.lastIndexOf("/");
if(index >= 0)
fileName = fileName.substring(index);
//Create a temporary file
File tempFile = new File(Environment.getExternalStorageDirectory(), fileName);
if(!tempFile.exists())
tempFile.createNewFile();
InputStream instream = entity.getContent();
BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
//Read bytes into the buffer
ByteArrayBuffer buffer = new ByteArrayBuffer(50);
int current = 0;
while ((current = bufferedInputStream.read()) != -1) {
buffer.append((byte) current);
}
//Write the buffer to the file
FileOutputStream stream = new FileOutputStream(tempFile);
stream.write(buffer.toByteArray());
stream.close();
}
//생략
public boolean onCreateOptionsMenu (Menu menu) {
menu.add(0, SURV, 0, "설문조사");
menu.add(0, ENHA, 0, "엔하위키 홈");
//생략
return super.onCreateOptionsMenu(menu);
}
public boolean onMenuItemSelected(int featureId, MenuItem item) {
switch (item.getItemId()) {
case ENHA:
enhaView.loadUrl("http://m.enha.kr/wiki/FrontPage");
enhaView.setWebViewClient(new EnhaWebViewClient());
return true;
//생략
return super.onMenuItemSelected(featureId, item);
}
private class EnhaWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
}