2013-07-19 2 views
10

startActivity에 전달하려는 의도가 FLAG_GRANT_READ_URI_PERMISSION 인 경우 setData을 사용하여 URI가 설정된 경우 Uri 권한을 부여 할 수 있습니다. 그러나 UriEXTRA_STREAM 인 경우 jeallybean보다 앞에 Uri이 부여되지 않습니다.의도적으로 EXTREA_STREAM에서 URI를 허용하는 URI 허용

grantUriPermission 다음에 revokeUriPermission을 사용하면 허용 된 사용 권한을 취소 할 수 있음을 알고 있습니다. 그렇지만 revokeUriPermission을 실행할 좋은 곳이없는 것 같습니다.

더 좋은 해결책이 있습니까? 또는 revokeUriPermission을 입력 하시겠습니까? 미리 감사드립니다.

관련 링크 : How to grant temporary access to custom content provider using FLAG_GRANT_READ_URI_PERMISSION

+0

이 질문에 대한 답변을 찾으셨습니까? EXTRA_STREAM의 데이터에 대한 읽기 권한을 부여하려는 것과 동일한 문제가 있습니다. – StuStirling

+0

내가 틀렸다고 정정하십시오. Uri (개인 파일 시스템의 파일 가리키기)를 기기에 설치된 다른 앱에 전달하려고합니다. Uri는 ContentProvider를 통해 액세스됩니다. –

+0

인벤 트를 작성하고 활동을 시작하는 곳에 매니페스트와 코드 부분을 게시하십시오. –

답변

2

는 좀 그것에 대해 읽는했다. 첫째, EXTRA_STREAM은 FLAG_GRANT_READ_URI_PERMISSION을 사용하지 않습니다. 그것은 풋내기에서, startActivity()을 에서 ClipData으로 복사하고 FLAG_GRANT_READ_URI_PERMISSION을 사용하기 때문에 JellyBean부터 시작됩니다.

revokeUriPermission()을 호출해야하는 질문에 관해서.

private static final int REQUEST_CODE = 1; 
startActivityForResult(intent, REQUEST_CODE); 

대신

startActivity(intent); 

의 후 다음 방법 오버라이드 (override) : 활동 종료를 시작했을 때 방법 위

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // Check which request we're responding to 
    if (requestCode == REQUEST_CODE) { 
     // Call revokeUriPermission here 

    } 
} 

가 호출됩니다

내가 사용하는 것이 좋습니다. 설명서를 살펴보십시오 here

+1

내 요구 사항은 false로 설정된 플래그를 내 보낸 콘텐츠 제공 업체를 사용하여 이메일 앱에 첨부 파일을 제공하는 것입니다. 전자 메일 인 텐트에 의해 시작되는 첫 번째 활동은 선택기 활동이며 startActivityForResult는 전자 메일 활동의 끝내기를 반환하지 않고 대신 ChooserActivity의 마무리를 제공합니다. 따라서 이메일 사용 권한보다 사용 권한이 취소되는 경우 첨부 파일을 읽지 못합니다. – AndRSoid

+0

ChooserActivity를 명시 적으로 호출 하시겠습니까? 그렇다면 무단 결재를 시도하십시오. 이메일 응용 프로그램 만 표시되도록하려면이 intent.setData (Uri.parse ("mailto :"));를 호출하십시오. 그렇다면 제공자에게 이 충분할 수도 있습니다. ContentProvider를 통해 액세스 할 수있는 파일을 지정할 수 있습니다 (regex와 함께 작동 함). 여전히 좋지 않다면 별도의 질문을하고 코드를 붙여 넣으십시오. 나는 뭔가를 알아낼 것이다. 엄지 위로! –