현재는 이런상태인데 어떻게 추가를 해야지 정상적으로 작동을 하게될까요
> private class myWebViewClient extends WebViewClient {
> @Override
> public boolean shouldOverrideUrlLoading(WebView view, String url) {
> // 전화걸기 (퍼미션설정) Intent.ACTION_CALL , Intent.ACTION_DIAL
> if (url.contains("tel:")) {
> startActivity(new Intent(Intent.ACTION_CALL, Uri.parse(url)));
> return true;
> }
> // 메일 보내기 Intent.ACTION_SENDTO
> else if (url.contains("mailto:")) {
> startActivity(new Intent(Intent.ACTION_SENDTO, Uri.parse(url)));
> return true;
> }
> // 웹 화면 띄우기
> else {
> view.loadUrl(url);
> return true;
> }
> }
> }
> }
@01021619 위에 tel, mailto 처럼 intent에 대해서도 스위칭이 되도록 웹뷰를 커스터마이징하시면 되지 않을까요?
1개의 좋아요
답변 감사드립니다. 저도 그렇게 해봤는데… 다 똑같이 하고 mailto들어가는 부분에 kakaolink: 나 storylink: 이렇게 한후 action_view로 했는데…ㅠㅠ되질않아서요
다른곳이나 또 설정을 해야하는곳이있는건지…
이것말고도 혹시 다른 방법이 있는건지 모르겠습니다.ㅠㅠㅠ
leon
4월 7, 2016, 4:47오전
4
구체적인 구현 코드를 봐야 확인할 수 있을 것 같은데…
kakaolink 를 눌렀을때의 URL이 intent
로 시작하고 end
로 끝날거에요.
intent:#Intent;.....;end;
즉 이런 모양일텐데 여기서 intent:
와 end
는 떼고 사용해주셔야 합니다.
이 코드를 참조하시면 어떨까 싶네요.
https://devtalk.kakao.com/t/4-4/457/3?u=leon
이미 처리하신 내용인가요? 그렇다면 사용하신 코드를 첨주해주실 수 있으실까요?
2개의 좋아요
답변 정말 너무 감사드립니다. 저걸 사용하긴했었는데… 혹시 한번 봐주실수있으신가요?
mainactivity.java 파일의 소스는
package com.sangsangbizon.sangsangtour;
import android.app.Activity;
import android.content.Intent;
import android.content.res.Configuration;
import android.net.Uri;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.DownloadListener;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MainActivity extends Activity {
WebView myWebView;
@Override
public void onConfigurationChanged(Configuration newConfig){
super.onConfigurationChanged(newConfig);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myWebView = (WebView) findViewById(R.id.webView1);
myWebView.getSettings().setJavaScriptEnabled(true); // 자바스크립트를 사용할 수 있도록 해줍니다.
myWebView.loadUrl("http://www.sangsangbiz.com"); // 이곳에 URL (http://abc/abc.html) 을 넣어 합니다.
// file:///abc/abc.html 처럼 사용할 수 있습니다.
myWebView.setWebViewClient(new myWebViewClient());
// 다운 로드 할 수 있도록 해주는 함수 ==================================
myWebView.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(mimetype);
intent.setData(Uri.parse(url));
startActivity(intent);
}
});
}
// 디바이스 기기의 back 버튼 인식 ===========================================
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if((keyCode == KeyEvent.KEYCODE_BACK) && myWebView.canGoBack()){
myWebView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
// 웹 뷰 내부의 URL 인식
private class myWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// 전화걸기 (퍼미션설정) Intent.ACTION_CALL , Intent.ACTION_DIAL
if (url.contains("tel:")) {
startActivity(new Intent(Intent.ACTION_CALL, Uri.parse(url)));
return true;
}
// 메일 보내기 Intent.ACTION_SENDTO
else if (url.contains("mailto:")) {
startActivity(new Intent(Intent.ACTION_SENDTO, Uri.parse(url)));
return true;
}
// 웹 화면 띄우기
else {
view.loadUrl(url);
return true;
}
}
}
}
androidmanifest.xml의 코드는
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.sangsangbizon.sangsangtour">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="상상여행사"
android:theme="@android:style/Theme.NoTitleBar"
>
<activity
android:name=".MainActivity"
android:configChanges="keyboard|keyboardHidden|orientation|orientation|screenSize"
android:label="상상여행사" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
입니다. 답변주신 내용은 제가 적용을 했었는데 제가 이쪽을 배운것이 아니고 인터넷검색을 통해서 하다보니 getContext()의 처리가 붉은색으로 뜨는데 어떻게 처리를 해야할지몰라 못했던것으로 기억합니다.
혹시 가능하시다면 답변을 주시면 감사드리겠습니다…ㅠ
leon
4월 7, 2016, 8:19오전
6
위에 첨부해드린 코드에서 getContext()
빼고 테스트해보세요. 잘 되어야 할 것 같은데요~
다시한번 답변 감사드립니다. 말씀하신대로 getContext()를 빼고 ActivityNotFoundException는 import class로 해서 작업을 했는데요 그 전과같은 intent:kakaolink://send 라는 오류는 나오지않지만
이번에는 서버에서 정보를 가져오는 중에 오류가 발생했습니다[DF-DIC-02]라고 나오는데 작성한 코드가 아닌 다른쪽에서 잘못을 한것인걸까요…
leon
4월 7, 2016, 8:39오전
8
코드와 환경정보(안드 버전등등) 없이 도움을 더 드리기가 힘드네요ㅜ