Dev/Search Keyword

3/7 - #android, #webview

healthyryu 2018. 3. 7. 10:05


- Android Webview Cache 삭제

webView.clearCache(true);

webView.clearHistory();


webView.loadUrl(authorizeURL);


참고 : https://stackoverflow.com/a/31950789/3897810



- Android PDF파일 다른앱으로 전송하기

File outputFile = new File(filePath);

Uri uri = FileProvider.getUriForFile(ReportActivity.this, "com.example.test.provider_paths", outputFile);

// API Level 24 버전부터 특정 파일이나 폴더를 다른 앱으로 전달하려면 FileProvider 를 사용해야 한다.

// Uri uri = Uri.fromFile(outputFile);

// 위에꺼를 사용한다면 아래와 같은 Exception 을 만나게 된다

android.os.FileUriExposedException: file:///storage/emulated... exposed beyond app through Intent.getData()


Intent share = new Intent();

share.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

share.setAction(Intent.ACTION_SEND);

share.setType("application/pdf");

share.putExtra(Intent.EXTRA_STREAM, uri);

share = Intent.createChooser(share, "전송");

// intent.createChooser() 를 사용하는 이유는 매번 전송할 앱을 선택하기 위함이다. 이것을 사용하지 않으면 처음에 선택한 앱으로만 계속 전달이 된다.

startActivity(share);

참고 : https://stackoverflow.com/a/38858040/3897810


* 추가 

: 외부 앱에 파일 정보 공유를 하는데 API Level 24 부터 file:// URI의 노추을 금지하는 스트릭트(strict) 모드 정책을 적용. 앱 간에 파일을 공유하려면 content:// URI 를 보내고 이 URI에 대해 임시 액세스 권한을 부여해야 한다. 그리고 이 권한을 쉽게 부여하려면 FileProvider 클래스를 이용해야 한다.

FileProvider 클래스는 Support 라이브러리 v4d에서 제공하는 콘텐츠 프로바이더, XML로 제공하는 설정을 기반으로 파일들에 대한 Content URI를 생성해 준다. FileProvider 를 이용하려면 res/xml 폴더에 임의의 이름으로 XML 파일을 만들어 줘야한다.

파일명 : provider_paths

<path xmlns:android="http://schemas.android.com/apk/res/android">

<external-path name="myfiiles" path="."/>

</path>

<external-path> 는 외부 저장 공간의 파일을 공유하기 위해 사용. <file-path> 는 내부 저장 공간의 파일을 공유하기 위해 사용.

그리고 위의 FileProvider 를 AndroidManifest.xml 에 등록해야 한다.

<provider

android:name="android.support.v4.content.FileProvider"

android:authorities="com.example.test.provider_paths"

android:exported="false"

android:grantUriPermissions="true">

<meta-data

android:name="android.support.FILE_PROVIDER_PATHS"

android:resource="@xml/provider_paths"/>

</provider>

참고 : 깡샘의 안드로이드 프로그래밍



- Android 해당 폴더의 파일 개수 가져오기

File dir = new File(mFolderPath);

int fileCount = 0;

for (String fileName : dir.list()) {

  if (fileName.contains(mTargetPdfName)) {

    fileCount++;

  }

}

참고 : https://stackoverflow.com/q/12928303/3897810



반응형