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

안드로이드 7.0 누가에서 포토앱 중지 현상

0 추천

앱 내에서 사진 앱을 사용하여 촬영 후 사진 자르기 또는 앨범에서 불러온 후 사진 자르기를 시도하는데

 

안드로이드 7.0에서 시도할 때 구글 포토앱이 중지되었습니다 라고 나오면서 실행이 안되네요

사진 촬영까지는 잘됩니다.

사진 촬영과 앨범에서 가져오는 코드는

	private void doTakePhotoAction()
	{
		Log.d(tag,"사진1");
		Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

		// 임시로 사용할 파일의 경로를 생성
		String url = "tmp.jpg";

		mImageCaptureUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(), url));

		intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mImageCaptureUri);

		
		try{
			startActivityForResult(intent, PICK_FROM_CAMERA);
		}catch (SecurityException e) {
			if (checker.lacksPermissions(PERMISSIONS)) {
				startPermissionsActivity();
			}

			e.printStackTrace();
			if(language.equals("en") || language.equals("th") || language.equals("vi"))
				Toast.makeText(getApplicationContext(), "", Toast.LENGTH_LONG).show();
			else
				Toast.makeText(getApplicationContext(), "", Toast.LENGTH_LONG).show();
		}
	}
	private void doTakeAlbumAction()
	{
		// 앨범 호출
		Intent intent = new Intent(Intent.ACTION_PICK);
		intent.setType(android.provider.MediaStore.Images.Media.CONTENT_TYPE);
		startActivityForResult(intent, PICK_FROM_ALBUM);
	}

 

이렇게 되어있습니다. 

그런데 로그를 보니 제 앱에서 에러가 난게 아닌것 같습니다.

 

10-07 12:33:34.035: D/AndroidRuntime(14626): Shutting down VM

10-07 12:33:34.063: E/AndroidRuntime(14626): FATAL EXCEPTION: main

10-07 12:33:34.063: E/AndroidRuntime(14626): Process: com.google.android.apps.photos, PID: 14626

10-07 12:33:34.063: E/AndroidRuntime(14626): android.os.FileUriExposedException: file:///storage/emulated/0/tmp.jpg exposed beyond app through Intent.getData()

10-07 12:33:34.063: E/AndroidRuntime(14626): at android.os.StrictMode.onFileUriExposed(StrictMode.java:1799)

10-07 12:33:34.063: E/AndroidRuntime(14626): at android.net.Uri.checkFileUriExposed(Uri.java:2346)

10-07 12:33:34.063: E/AndroidRuntime(14626): at android.content.Intent.prepareToLeaveProcess(Intent.java:8933)

10-07 12:33:34.063: E/AndroidRuntime(14626): at android.content.Intent.prepareToLeaveProcess(Intent.java:8894)

10-07 12:33:34.063: E/AndroidRuntime(14626): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1517)

10-07 12:33:34.063: E/AndroidRuntime(14626): at android.app.Activity.startActivityForResult(Activity.java:4224)

10-07 12:33:34.063: E/AndroidRuntime(14626): at db.startActivityForResult(PG:48)

10-07 12:33:34.063: E/AndroidRuntime(14626): at di.startActivityForResult(PG:75)

10-07 12:33:34.063: E/AndroidRuntime(14626): at vbg.startActivityForResult(PG:205)

10-07 12:33:34.063: E/AndroidRuntime(14626): at android.app.Activity.startActivityForResult(Activity.java:4183)

10-07 12:33:34.063: E/AndroidRuntime(14626): at di.startActivityForResult(PG:856)

10-07 12:33:34.063: E/AndroidRuntime(14626): at vbg.startActivityForResult(PG:196)

10-07 12:33:34.063: E/AndroidRuntime(14626): at gv.handleMessage(PG:1468)

10-07 12:33:34.063: E/AndroidRuntime(14626): at android.os.Handler.dispatchMessage(Handler.java:102)

10-07 12:33:34.063: E/AndroidRuntime(14626): at android.os.Looper.loop(Looper.java:154)

10-07 12:33:34.063: E/AndroidRuntime(14626): at android.app.ActivityThread.main(ActivityThread.java:6077)

10-07 12:33:34.063: E/AndroidRuntime(14626): at java.lang.reflect.Method.invoke(Native Method)

10-07 12:33:34.063: E/AndroidRuntime(14626): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)

10-07 12:33:34.063: E/AndroidRuntime(14626): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)

10-07 12:33:34.084: W/ActivityManager(585):   Force finishing activity com.google.android.apps.photos/.photoeditor.intents.EditActivity

10-07 12:33:34.146: W/MdnsClient_Cast(13051): #acquireLock. Multicast lock not held. Acquiring. Subtypes:"96084372"


10-07 12:33:34.506: I/art(585): Background partial concurrent mark sweep GC freed 32825(2MB) AllocSpace objects, 2(1048KB) LOS objects, 33% free, 18MB/27MB, paused 7.123ms total 258.125ms

 

누가 올라간 폰도 없어서 문제찾기가 어렵네요. 도움 부탁드립니다.

브루스웨인 (8,580 포인트) 님이 2016년 10월 14일 질문

1개의 답변

0 추천

android.os.FileUriExposedException 로 검색해보세요.

7.0 부터는 targetsdk가 24이상인 앱은 file:// uri를 다른 앱과 주고 받을 수 없게 바뀌었습니다.

익명사용자 님이 2016년 10월 14일 답변
감사합니다. 그럼 7.0으로 분기처리하는게 낫겠죠?
분기처리를 하셔도 되고 파일로 받지 마시고 데이터로 받으시면 7.0에서도 정상적으로 돌아갑니다.
그런데 데이터로 넘기려면 용량제한 있지 않나요? 100키로바이트 제한으로 알고 있는데 이미지 넘기면 적어도 1메가는 되어서요
...