마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

asset에 있는 html 파일이나 이미지 파일을 찾을 수 없다는데..

0 추천
 
@SuppressLint("SetJavaScriptEnabled")
public class MainActivity extends CordovaActivity {

	@Override
	 public void onCreate(Bundle savedInstanceState) {
		  super.onCreate(savedInstanceState);
		  super.loadUrl("file:///android_asset/www/index.html");
		
		  WebSettings webSettings = super.appView.getSettings();
		  webSettings.setJavaScriptEnabled(true);
		  
		  super.appView.addJavascriptInterface(new MyJavascriptInterface(), "android");
	 }
 
		 
	private class MyJavascriptInterface {			 
		 		
		@JavascriptInterface
		 public void doHtml() {
			   new Handler().post(new Runnable() {
					public void run() {	
						Intent intent = new Intent(Intent.ACTION_VIEW);
						intent.setData(Uri.parse("file:///android_asset/www/test.html"));
						startActivity(intent);
					}
			   });
			}
		 		 		 
		 @JavascriptInterface
		 public void doKakao(final String subject, final String content) {
			   new Handler().post(new Runnable() {
					public void run() {						
						Intent shareIntent = new Intent (android.content.Intent.ACTION_SEND);
						 shareIntent.setType("text/plain");
						 shareIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
						 shareIntent.putExtra(Intent.EXTRA_TEXT, content);
						 shareIntent.setType("image/png");
						 shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///android_asset/www/img/tokki.png"));
						 shareIntent.setPackage("com.kakao.talk");
						 startActivity(Intent.createChooser(shareIntent, subject));
					}
			   });
		  }
     }
}

 

안녕하세요.

java 지식이 없는 상태에서 하이브리드 앱을 만들다 보니 막히는 데가 참 많습니다.

 

1. doHtml() 메서드는    asset 아래에 있는 test,html 파일을 불러오려는 것이고,

2. doKakao() 메서드는  안드로이드 공유기능을 이용해

 asset 아래 tokki.png 라는 이미지 파일을 텍스트와 함께 카카오톡으로 전달하려는 것입니다.

 
결론은 둘 다 파일을 읽어들이지 못한다는 것인데요, 어떻게 해야할런지요?
 
인테넷에서 여러가지로 찾아봤는데 java 지식이 없다보니 응용할 엄두가 안나네요.

 

친절하게 답변해주신 분 하시는 일마다 반드시 보이지 않는 도움을 받아 잘 풀릴겁니다^^

 

 

we3355 (210 포인트) 님이 2014년 3월 3일 질문

2개의 답변

0 추천

index.html 은 불러와 지던가요..? 불러와진다면

onCreate 에 있는 URL 로드 하는 부분

super.loadUrl("file:///android_asset/www/index.html");

이걸 제일 마지막 줄로 옮겨보세요..

Gioskhan (12,060 포인트) 님이 2014년 3월 3일 답변
안녕하세요. 관심감사합니다.
물론 index.html 은 불러와집니다.

index.html 에서 자바스크립트로 doHtml() 을 이용해서
test.html 파일을 뛰워주려는 건데
"문서경로가 잘 못되었다"는 오류가 나옵니다.

위치를 바꿔줘도 마찬가지네요.
0 추천
A앱의 assets 에 들어있는 파일은 B앱에서 읽을 수 없습니다.

해당 파일을 SD카드에 복사한 후 그 경로를 전달하세요.
익명사용자 님이 2014년 3월 3일 답변
같은 앱 안에서 불러오는 겁니다.
같은 앱 안에서 불러오는게 아닙니다.
doHtml 과 doKakao 메소드 안에서는 Intent로 호출되는 앱에 asset에 있는 파일 경로를 넘기고 있습니다.
호출되는 앱에서 저 경로의 파일을 읽을 수 있을리 없지요.
그렇군요?
sd카드에 복사는 그냥 앱을 설치하면 asset 내 파일들도
자동으로 딸려가 설치되는 거 아닌가요?
그 파일경로가 file:///android_asset/ 은 아니라는 말씀같은데
방법을 좀 자세히 알으켜 주시켜 안될까요?
...