행복한 하루

파일(assets)을 안드로이드 앱에 넣고 사용하기(webview와 txt파일 연동) 본문

Android/안드로이드 프로그래밍

파일(assets)을 안드로이드 앱에 넣고 사용하기(webview와 txt파일 연동)

변화의 물결 2020. 6. 25. 19:55

 

 

안녕하세요.

 

 안드로이드 앱을 만들다 보니 제가 가지고 있는 파일을 앱안에 저장하고 저장된 HTML  파일리스트를  Webview와 연동하고 싶었습니다. 저만 그렇수도 있구요.;;;

 

 우선 assets 에 파일을 넣는 경우, 최근 assets 폴더가 자동으로 만들어져 있지않더군요.

 (현재 android studio 3.6, 4.0 버전에 테스트했습니다.)  

 New 해서 만들 수도 있겠지만, 간단하게 자신의 프로젝트 소스 폴더(...\app\src\main\)에 assets 라고 만들고 파일들을 넣어두면 스튜디오에 나타났습니다.

 

 그리고 앱에서 접근하는 방법은 여러 좋은 사이트들이 있어서 저는 간단한 내용 설명들만 하겠습니다.

 

 출처1 사이트에 나온 것 처럼 파일       

AssetManager assetMgr = this.getAssets();

해서 assets 안에 있는 파일들을 검색할 수 있었습니다.
출처1 https://evnt-hrzn.tistory.com/23

 

그런데 여기서 조금 주의 할 것이  

assets = asssetMgr.list("/") 과 assets = asssetMgr.list("")

 

If you like to list your files in the root-directory of your app, please pass "/" as parameter to the list()-method

앱의 루트의 리스트를 보려면 "/", 없으면 그냥 assets의 경로를 읽어 온다고 합니다. (출처2)

출처2 https://coderwall.com/p/0ldbgw/working-with-assets-in-android

 

그런데 파일리스트를 읽어 오면 알겠지만, 리스트의 내용으도 오지만 폴더 정보를 구분해야 하고 assets 안에 폴더가 있으면 재귀호출 등을 해주어야 했습니다. 

 

 저는 단지 assets 폴더 안에 개인 폴더 안에 저장된 html을 webview에  나타내고 싶을 뿐인데....

그런데 답은 의외로 간단했습니다.

 

file:///android_asset/myPrivate/index.html 로 지정하면 Webview 링크로 사용가능했습니다. ;;; 

출처3 https://pilot376.tistory.com/70

 

이렇게 하면 저장된 html 파일을 webview로 볼 수가 있었습니다.

 

즐거운 코딩되세요. ^^

 

 

아참, 추가로 작업하면서  assets에 있는 txt 파일 읽어와서 ArraryList에 넣어 두는 방법입니다.

  

ArrayList listString = new ArrayList<>();

   try {
         InputStream inputStream = assetMgr.open("list.txt");
         BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));

          String line="";
          while((line=reader.readLine())!=null) { listString.add(line); }
          reader.close();
          inputStream.close();
     } catch (IOException e) {
         //Log.d("TAG", "Exception ERROR" );
         e.printStackTrace();
      } finally { }

 

 

Comments