2014-04-10 6 views
5

android 개발자 파일을 검색하고 읽었지만 콘텐츠 제공자에게 URI 권한 부여에 대한 만족스러운 답변을 찾지 못했습니다. 누구든지 더 자세하고 더 단순하게 설명 할 수 있습니까? 제 질문은 : 어떤 보조금이 사용하고 있습니까? 권한 부여 권한 간 true와 false의 차이점 사실을 사용해야 할 때? 거짓 일 때? 및 자세한 내용은 높이 평가됩니다.콘텐츠 공급자 권한을 부여합니다. uri permission

답변

5

어떤 보조금이 사용하고 있습니까?

은 "부여 Uri 권한"기능을 사용하면 타사에 의해 일반적으로 액세스 할 수없는 ContentProvider을 가질 수 있습니다, 아직 선택적으로 예 (짧은 시간 동안 개별 타사 응용 프로그램에 대한 개별 Uri 값에 대한 액세스를 허용, 공급자가 제공하는 PDF를 볼 수있을 정도로 길다). 진실하고

android:grantUriPermissions="true" 거짓 부여 URI 권한 사이의 차이점을 무엇

는 Java 코드가 ContentProvider에서 제공하는 모든 Uri에 대한 FLAG_GRANT_READ_URI_PERMISSIONFLAG_GRANT_WRITE_URI_PERMISSION를 사용할 수 있음을 나타냅니다.

android:grantUriPermissions="false" 자식 의해 지정된 만 Uri<grant-uri-permission> 요소 FLAG_GRANT_READ_URI_PERMISSIONFLAG_GRANT_WRITE_URI_PERMISSION 함께 사용될 수 있음을 나타낸다.

+0

나는 여전히 동일한 시점에 있으며, 우리가 사용해야 할 때, 왜 권한 부여 URI가 사용되는지 이해하지 못한다. 좀 더 자세하게 설명하고 주니어 개발자처럼 말해 줄 수 있습니까? – Android

1

애플리케이션 캐시 디렉토리에있는 일부 파일을 우편으로 보내야한다고합니다.

다른 앱이 애플리케이션의 콘텐츠에 액세스 할 수 있도록 지정하지 않는 한 다른 앱이 해당 파일에 액세스 할 수 없습니다. 이를 위해 컨텐트 프로 바이더를 만들고, 모든 uri가 다음과 같은 형식의 컨텐트에 있다고 가정합니다 : //com.your.app/file 애플리케이션 캐시 디렉토리로 리다이렉트합니다.

일부 코드 :

File f = ...; // Some local file. 
Uri uri = Uri.parse("content://com.your.app/" + f.getName()); 
Intent intent = new Intent(Intent.ACTION_SEND); 
intent.setType("text/plain"); 
intent.putExtra(Intent.EXTRA_SUBJECT, "Subject"); 
intent.putExtra(Intent.EXTRA_TEXT, "Body"); 
intent.putExtra(Intent.EXTRA_STREAM, uri); 

// You only can add flag FLAG_GRANT_READ_URI_PERMISSION if your app has 
// android:grantUriPermissions="true" in manifest or see quote below. 
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 
startActivity(Intent.createChooser(intent, "Send Email")); 

CommonsWare 같이 말했다 :

안드로이드 : grantUriPermissions는 = "false"설정은 단지 열린 우리당이 가 > 요소 수있는 아이 < 보조금 URI-의 허가에 의해 지정된 값을 나타냅니다 FLAG_GRANT_READ_URI_PERMISSION 및 FLAG_GRANT_WRITE_URI_PERMISSION이 (가) 과 함께 사용됩니다.