타사 앱 (예 : WhatsApp)의 이미지를 내 앱 (Marshmallow에서 테스트 중)으로 가져 오려고합니다. 나는 WhatsApp에에서 "공유 이미지"를 수행하고 내 응용 프로그램과 공유 할 때,이 같은 URI 뭔가 얻을 :Android : 콘텐츠 : // URI를 통해 타사 앱 (예 : WhatsApp)에서 이미지 비트 맵 가져 오기
content://com.whatsapp.provider.media/item/61025
을하지만 URI 이상으로 getContentResolver().openInputStream(uri)
또는 getContentResolver().openFileDescriptor(uri, "r")
를 호출 내 응용 프로그램에서, 그것은 예외 충돌 :
내가 그렇게하려고 무엇이 java.lang.SecurityException : 허가 거부 : ProcessRecord 개구로부터 제공 com.whatsapp.MediaProvider {a4b804a 30,321 : com.myapp/u0a145} (PID = 30,321 = 10,145을 UID)로부터 수출되지 uid 10083
훨씬
나는 SO에이 예외를 찾았다 및 similar question이 제기하지만 Google 포토 이미지를 가져 발견과 같은 권한을 추가하는 것을 필요있어 :
<uses-permission android:name="com.google.android.apps.photos.permission.GOOGLE_PHOTOS"/>
을 그러나 많은 앱이있을 수 있고 각 앱 또는 다른 앱에 대한 권한을 추가해야 할 필요가 있기 때문에이를 고려하지 않아도됩니다.
다른 answers에서는 콘텐츠 제공 업체의 데이터를 즉시 읽거나 복사하는 것이 좋습니다. 그러나 확실하지 않은 방법. 내가 예외적으로 openInputStream
에서 얻었 기 때문에.
또한 WhatsApp 이미지를 다른 앱 (예 : Google 드라이브)과 공유 할 수 있으므로이를 수행 할 수있는 방법이 있어야한다고 언급해야합니다.
공유 힌트 나 해결 방법을 알려주십시오.
외부 저장소에서 읽을 수있는 권한이 있으며 런타임 중에 확인 했습니까? –
해당 제공 업체가 내보내지지 않았으므로 일부 제한된 패키지 하위 집합 (예 : Google 드라이브)에 액세스 할 수 있지만 앱에서 허용되지 않습니다. – pskink
@Nabin 예 허가가 있습니다 – Atul