2014-04-10 19 views
5

Szukałem i czytałem pliki dla programistów Androida, ale nie znalazłem satysfakcjonującej odpowiedzi na udzielenie zgody dostawcy treści. Czy ktokolwiek może wyjaśnić bardziej szczegółowe i prostsze. Moje pytania są następujące: Jaką dotację stosuje uri? Jakie są różnice między uprawnieniami uri true a false Kiedy powinniśmy używać true? kiedy jest fałszywy? i wszelkie inne szczegóły są mile widziane.Dostawca treści uri zezwolił

Odpowiedz

5

Jaką dotację wykorzystujesz?

„Udzielenie Uri uprawnienia” pozwala mieć ContentProvider który jest zwykle niedostępne dla osób trzecich, ale selektywnie umożliwiać dostęp do poszczególnych Uri wartości do poszczególnych aplikacji firm trzecich na krótki okres czasu (na przykład, wystarczająco długo, aby wyświetlić plik PDF obsługiwany przez dostawcę).

Jakie są różnice między pozwoleniem grant uri true i false

android:grantUriPermissions="true" wskazuje, że kod Java mogą korzystać FLAG_GRANT_READ_URI_PERMISSION i FLAG_GRANT_WRITE_URI_PERMISSION dla każdego Uri obsługiwanym przez tego ContentProvider.

android:grantUriPermissions="false" wskazuje, że tylko wartości Uri określone przez dzieci <grant-uri-permission> elementy mogą być używane z FLAG_GRANT_READ_URI_PERMISSION i FLAG_GRANT_WRITE_URI_PERMISSION.

+0

Wciąż jestem w tym samym punkcie i nie rozumiem, dlaczego uri używa, kiedy powinniśmy go używać. Czy możesz wyjaśnić bardziej szczegółowo i powiedzieć mi, jak młodszy deweloper. – Android

1

Powiedz, że musisz wysłać plik znajdujący się w katalogu pamięci podręcznej aplikacji.

Żadne inne aplikacje nie mają dostępu do tego pliku, chyba że użytkownik określi, że inne aplikacje mogą uzyskać dostęp do zawartości aplikacji. W tym celu należy utworzyć dostawcę zawartości i powiedzieć, że wszystkie pliki URI są w formie: //com.twoj.app/file "przekieruj" do katalogu pamięci podręcznej aplikacji.

Niektóre kodu:

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")); 

Jak CommonsWare powiedział:

android: grantUriPermissions = "false" wskazuje, że tylko wartości URI określony przez dziecko < grant-uri-zgody > elementy mogą używać z FLAG_GRANT_READ_URI_PERMISSION i FLAG_GRANT_WRITE_URI_PERMISSION.