Android
Domniemane intencje
Szukaj…
Składnia
- Zamiar()
- Zamiar (Zamiar o)
- Intent (ciąg akcji)
- Intent (ciąg znaków, Uri uri)
- Intent (Context packageContext, Class <?> Cls)
- Intent (ciąg akcji, Uri uri, pakiet kontekstowyContext, klasa <?> Cls)
Parametry
Parametry | Detale |
---|---|
o | Zamiar |
akcja | String: czynność zamiaru, taka jak ACTION_VIEW. |
uri | Uri: identyfikator URI danych zamiaru. |
PackageContext | Context: Kontekst pakietu aplikacji implementującego tę klasę. |
cls | Class: klasa komponentu, która ma zostać użyta zgodnie z przeznaczeniem. |
Uwagi
Więcej o intencji
Więcej informacji o typach zamiarów
Domniemane i jawne intencje
Do uruchomienia działania lub usługi w ramach tego samego pakietu aplikacji służy wyraźna intencja. W takim przypadku nazwa zamierzonej klasy jest wyraźnie wymieniona:
Intent intent = new Intent(this, MyComponent.class);
startActivity(intent);
Jednak niejawne zamiary są wysyłane przez system dla dowolnej aplikacji zainstalowanej na urządzeniu użytkownika, która może obsłużyć ten zamiar. Służy do udostępniania informacji między różnymi aplikacjami.
Intent intent = new Intent("com.stackoverflow.example.VIEW");
//We need to check to see if there is an application installed that can handle this intent
if (getPackageManager().resolveActivity(intent, 0) != null){
startActivity(intent);
}else{
//Handle error
}
Więcej informacji na temat różnic można znaleźć w dokumentacji dla programistów Androida tutaj: Rozwiązanie problemu
Domniemane intencje
Ujawnione zamiary nie określają konkretnego komponentu, ale deklarują ogólną akcję do wykonania, która pozwala obsłużyć komponent z innej aplikacji.
Na przykład, jeśli chcesz pokazać użytkownikowi lokalizację na mapie, możesz użyć ukrytej intencji, aby zażądać, aby inna zdolna aplikacja pokazała określoną lokalizację na mapie.
Przykład:
// Create the text message with a string
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, textMessage);
sendIntent.setType("text/plain");
// Verify that the intent will resolve to an activity
if (sendIntent.resolveActivity(getPackageManager()) != null) {
startActivity(sendIntent);
}