2014-04-10 37 views
5

Ben android geliştirici dosyalarını araştırdım ve okudum ama içerik sağlayıcı hibe uri izni için herhangi bir tatmin edici cevap bulamadık. Herkes daha detaylı ve daha basit açıklayabilir. Sorularım: uri hangi hibe kullanıyor? Hibe izni arasındaki farklar doğru ve yanlış Doğru kullanılmalı mı? yanlış olduğunda? ve daha fazla ayrıntı takdir edilmektedir.İçerik sağlayıcı izni yok uri izni

cevap

5

uri hangi hibe kullanıyor?

"hibe Uri izinleri" özelliği üçüncü şahıslar tarafından normalde erişilemez bir ContentProvider sahip olmanızı sağlar, henüz seçici mesela (kısa bir süre için tek bir üçüncü taraf uygulamalar bireysel Uri değerlere erişime izin, Sağlayıcının sunduğu PDF'yi görüntüleyebilecek kadar uzun). Doğru ve

android:grantUriPermissions="true" sahte hibe uri izni arasındaki farkları nedir

Java kodu, o ContentProvider tarafından sunulan herhangi Uri için FLAG_GRANT_READ_URI_PERMISSION ve FLAG_GRANT_WRITE_URI_PERMISSION kullanabilirsiniz gösterir.

android:grantUriPermissions="false" çocuk tarafından belirlenen yalnızca Uri değerleri <grant-uri-permission> elemanları FLAG_GRANT_READ_URI_PERMISSION ve FLAG_GRANT_WRITE_URI_PERMISSION ile kullanılabilir olduğunu gösterir.

+0

aynı noktada hala duyuyorum ve kullandığımız gerekirken hibe uri kullanarak neden anlamıyorum. Eğer daha detaylı açıklamak ve junior geliştirici gibi söyleyebilir. – Android

1

Uygulama önbellek dizininizde bulunan bazı dosyaları postalamanız gerektiğini varsayalım. Diğer uygulamaların uygulamanızın içeriğine erişebileceğini belirtmedikçe, başka hiçbir uygulama bu dosyaya erişemez. Bunun için içerik sağlayıcısı yaratırsınız ve söyleyin, tüm url form içeriğinde: //com.your.app/dosyasını 'uygulama yönlendirme dizinine' yönlendirirsiniz.

Bazı kod:

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 olarak şunları söyledi:

android: grantUriPermissions = "false" sadece Uri > elemanları can çocuk < hibe-uri-izni ile belirtilen değer verdiğini gösterir FLAG_GRANT_READ_URI_PERMISSION ve FLAG_GRANT_WRITE_URI_PERMISSION ile birlikte kullanılabilir.