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

저장된 pdf파일 보여지고 바로 삭제 시점..

0 추천

안녕하세요. 현재 pdf파일 다운로드 하면

휴대폰에 저장이 되면서 화면에서 바로 pdf뷰어로 보여지게 해놨습니다.

근데 파일을 휴대폰에 저장시키면 안된다고 하여 파일을 삭제하여야 하는데

삭제 시점을 어떻게 잡아줘야할지 모르겠습니다.

현재 소스론 뷰어가 실행이 되면 파일이 삭제되어 X표시로 떠 안보입니다.

뷰어가 종료되고 뒤로가기 버튼을 눌렀을 때 삭제를 시키면 될것같은데 방법을 모르겠습니다.

소스는
 

public void run() {

            try {
             
             mHandlerSubs.post(desuUpdate);

             String mPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Download/";
              URL myFileUrl = new URL(imgUrl + filePath);
                 
                HttpURLConnection conn = (HttpURLConnection)myFileUrl.openConnection();
                conn.setRequestMethod("GET");
                conn.setRequestProperty("Cookie", idValue);
                conn.setDoInput(true);
                conn.connect();

                InputStream is = conn.getInputStream();
                File file = new File(mPath, fileNm);
                OutputStream out = new FileOutputStream(file);
                saveRemoteFile(is, out);
                out.close();

                viewFile(mContext, mPath, fileNm);
            
                } catch (IOException e){

                  e.printStackTrace();
                  mHandlerSub.post(yrocUpdate);

                }
  }

  public static void viewFile(Context ctx, String filePath, String fileName) {
    // TODO Auto-generated method stub
    Intent fileLinkIntent = new Intent(Intent.ACTION_VIEW);
    fileLinkIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    fileLinkIntent.addCategory(Intent.CATEGORY_DEFAULT);

    File file = new File(filePath, fileName);
    Uri uri = Uri.fromFile(file);
    String fileExtend = getExtension(file.getAbsolutePath());

    if (fileExtend.equalsIgnoreCase("mp3")) {
     fileLinkIntent.setDataAndType(Uri.fromFile(file), "audio/*");
    } else if (fileExtend.equalsIgnoreCase("mp4")) {
     fileLinkIntent.setDataAndType(Uri.fromFile(file), "vidio/*");
    } else if (fileExtend.equalsIgnoreCase("jpg")
      || fileExtend.equalsIgnoreCase("jpeg")
      || fileExtend.equalsIgnoreCase("gif")
      || fileExtend.equalsIgnoreCase("png")
      || fileExtend.equalsIgnoreCase("bmp")) {
     fileLinkIntent.setDataAndType(Uri.fromFile(file), "image/*");
    } else if (fileExtend.equalsIgnoreCase("txt")) {
     fileLinkIntent.setDataAndType(Uri.fromFile(file), "text/*");
    } else if (fileExtend.equalsIgnoreCase("doc")
      || fileExtend.equalsIgnoreCase("docx")) {
     fileLinkIntent.setDataAndType(Uri.fromFile(file), "application/msword");
    } else if (fileExtend.equalsIgnoreCase("xls")
      || fileExtend.equalsIgnoreCase("xlsx")) {
     fileLinkIntent.setDataAndType(Uri.fromFile(file),
       "application/vnd.ms-excel");
    } else if (fileExtend.equalsIgnoreCase("ppt")
      || fileExtend.equalsIgnoreCase("pptx")) {
     fileLinkIntent.setDataAndType(Uri.fromFile(file),
       "application/vnd.ms-powerpoint");
    } else if (fileExtend.equalsIgnoreCase("pdf")) {
     fileLinkIntent.setDataAndType(Uri.fromFile(file), "application/pdf");
    } else if (fileExtend.equalsIgnoreCase("hwp")) {
     fileLinkIntent.setDataAndType(Uri.fromFile(file),
       "application/haansofthwp");
    }
    PackageManager pm = ctx.getPackageManager();
    List<ResolveInfo> list = pm.queryIntentActivities(fileLinkIntent,
      PackageManager.GET_META_DATA);
    if (list.size() == 0) {
     Toast.makeText(ctx, fileName + "을 확인할 수 있는 앱이 설치되지 않았습니다.",
       Toast.LENGTH_SHORT).show();
    } else {
     
     ctx.startActivity(fileLinkIntent);

    }
    
         if(file.exists())
         {    
          file.delete(); // 삭제
          Log.i("file=====", "Delete");      
         }
   }



어떻게 해야 파일 보여주고난 후 삭제할 수 있을까요??

동그랑때앵 (320 포인트) 님이 2016년 5월 23일 질문

1개의 답변

0 추천
"저장시키면 안된다"가 어떤 의미인지를 먼저 파악해야 합니다.

1. "어떠한 경우에도 기기에 저장이 되어서는 안된다"라는 뜻이면 처음부터 구현이 불가능합니다.

2. "앱이 종료되었을 때 남아있으면 안된다"는 뜻이면 onDestroy에서 처리하면 됩니다. 그런데 onDestroy가 꼭 불려지는 것은 아니기 때문에 좀 더 처리를 해야 할 겁니다.
익명사용자 님이 2016년 5월 24일 답변
2016년 5월 24일 수정
답변 감사합니다..

말씀하신 케이스 중 2번의 경우이며 한 번 테스트 해봐야겠습니다..
...