어질어질
50
2021-03-05 13:46:09
2
185

안드로이드 버튼 화면 캡쳐 하는 부분에서 안되네요


제가 인터넷에서 찾아서 화면 캡쳐 버튼을 실행시키려고 하는데 os 에서 자꾸 catch문으로 빠지는데 뭐가 문제인가여....ㅠㅠ 퍼미션은 넣었습니당....도와주세요....

class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}

//캡쳐버튼클릭
fun mOnCaptureClick(v: View?) {
//전체화면
val rootView = window.decorView
val screenShot = ScreenShot(rootView)
if (screenShot != null) {
//갤러리에 추가
sendBroadcast(Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(screenShot)))
}
}

//화면 캡쳐하기
fun ScreenShot(view: View): File? {
view.isDrawingCacheEnabled = true //화면에 뿌릴때 캐시를 사용하게 한다
val screenBitmap = view.drawingCache //캐시를 비트맵으로 변환
val filename = "screenshot.png"
val file = File(Environment.getExternalStorageDirectory().toString() + "/Pictures", filename) //Pictures폴더 screenshot.png 파일
var os: FileOutputStream? = null

try {
os = FileOutputStream(file)
screenBitmap.compress(Bitmap.CompressFormat.PNG, 90, os) //비트맵을 PNG파일로 변환
os.close()
} catch (e: IOException) {
e.printStackTrace()
return null
}
view.isDrawingCacheEnabled = false
return file
}
}
0
  • 답변 2

  • 윌리
    253
    2021-03-07 02:22:58

    메니페스트의 application애 아래 한줄을 추가해보세요


    android:requestLegacyExternalStorage="true"


  • 어질어질
    50
    2021-03-08 12:50:43

    와 감사합니다 덕분에 성공했네용ㅠㅠㅠ

  • 로그인을 하시면 답변을 등록할 수 있습니다.