내 활동의 스크린 샷을 찍어서 파일 을 저장할 수 있지만 공유하려고하면 첨부 파일을로드하지 못했습니다. 나는 android에서 새로운입니다. 어떤 도움이 유용 할 것입니다. 그것은 나에게 오류를 제공하지 않습니다Android : 첨부 파일 오류를로드하지 못했습니다?
public Bitmap takeScreenshot() {
View rootView = getWindow().getDecorView().findViewById(android.R.id.content).getRootView();
rootView.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(rootView.getDrawingCache());
rootView.setDrawingCacheEnabled(false);
Log.i("Screenshot","TAKEN");
return bitmap;
}
public void saveBitmap(Bitmap bitmap) {
imagePath = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/screenshot.png");
FileOutputStream fos;
try {
fos = new FileOutputStream(imagePath);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
Log.i("Screenshot","SAVED at"+imagePath);
fos.flush();
fos.close();
} catch (IOException e) {
Log.e("GREC", e.getMessage(), e);
}
}
private void shareIt() {
Uri uri = Uri.fromFile(imagePath);
Intent sharingIntent = new Intent(Intent.ACTION_SEND);
sharingIntent.setType("image/*");
String shareBody = "My highest score is ";
sharingIntent.putExtra(Intent.EXTRA_SUBJECT, "My score");
sharingIntent.putExtra(Intent.EXTRA_TEXT, shareBody);
sharingIntent.putExtra(Intent.EXTRA_STREAM, uri);
Log.i("IMAGE SHARING","TRY...");
try {
startActivity(Intent.createChooser(sharingIntent, "Share via"));
}catch(Exception e){
Log.i("try","failed");
Toast.makeText(getApplicationContext(), "No App Available", Toast.LENGTH_SHORT).show();
}
}
하지만 난 그것을 공유하려고 할 때, 그것은 나에게 "첨부 파일을로드하지 못했습니다"제공 :
이 내 코드입니다. 내가 어디로 잘못 가고 있니? 10 : LOG
01-20 21
53.689 3553-3582/com.quickyy.guess.com.quickyy W/OpenGLRenderer : 표면 0xac3d5c60 에러 = EGL_BAD_MATCH에 EGL_SWAP_BEHAVIOR을 설정하는 데 실패
01 -20 21 : 10 : 53.886 3553-3582/com.quickyy.guess.com.quickyy E/Surface : getSlotFromBufferLocked : 알 수없는 버퍼 : 0xb40974e0
01-20 21 : 10 : 55.259 3553-3553/com.quickyy. guess.com.quickyy I/Screenshot : TAKEN
01-20 21 : 10 : 55.340 3553-3553/com. quickyy.guess.com.quickyy I/Screenshot :/storage/emulated/0/screenshot.png에 저장 됨
01-20 21 : 10 : 55.506 3553-3553/com.quickyy.guess.com.quickyy I/이미지 공유, 시도 ...
01-20 21 : 10 : 58.858 3553-3582/com.quickyy.guess.com.quickyy E/표면은 : getSlotFromBufferLocked 불명 완충액 : 0xb4097a90
01-20 21 : 11 : 03.767 3553-3582/com.quickyy.guess.com.quickyy E/EGL_emulation : tid 3582 : eglSurfaceAttrib (1165) : 오류 0x3009 (EGL_BAD_MATCH)
01-20 21 : 11 : 03.767 3553-3582/com.quickyy.guess.com.quickyy W/OpenGLRenderer : 실패 표면 0xac3d5c60에 EGL_SWAP_BEHAVIOR을 (를) 설정하려면 error = EGL_BAD_MATCH
바꾸기'이미지/*''이미지/jpeg'와. saveBitmap()을 백그라운드 스레드로 옮기고'fos.flush()'와'fos.close()'사이에'fos.getFD(). sync()'를 추가하십시오. 안드로이드 7.0+에서,'targetSdkVersion'이 24 이상이되면, 더 이상'Uri.fromFile()'을 사용할 수 없으며 대신'FileProvider' 또는 동등한 것을 사용해야 할 것입니다. 또한'ACTION_SEND' 구현체는 동일한'Intent'에 대해'EXTRA_TEXT'와'EXTRA_STREAM'을 모두 지원할 필요는 없습니다. – CommonsWare
logcat을 추가하여 어떤 일이 일어나고 있는지 더 잘 알 수 있습니다. –
Log.i ("try", "failed");'가 _failed_를 반환했다고 가정합니다. 이 로그 라인을'Log.e ("try", "failed", e);'; LogCat에 예외를 덤프합니다. 이 출력을 포함 시키려면 질문을 편집하십시오. –