Android
Implicita avsikter
Sök…
Syntax
- Avsikt()
- Intent (Intent o)
- Syfte (String action)
- Syfte (String action, Uri uri)
- Intent (Context packageContext, Class <?> Cls)
- Intent (String action, Uri uri, Context packageContext, Class <?> Cls)
parametrar
parametrar | detaljer |
---|---|
o | Avsikt |
verkan | String: Avsikten, till exempel ACTION_VIEW. |
uri | Uri: Intentdata URI. |
packageContext | Context: Ett sammanhang av applikationspaketet som implementerar denna klass. |
cls | Class: Komponentklassen som ska användas för avsikten. |
Anmärkningar
Mer om avsikt
Mer om avsiktstyper
Implicit och explicit intention
En uttrycklig avsikt används för att starta en aktivitet eller tjänst i samma applikationspaket. I det här fallet nämns uttryckligen namnet på den avsedda klassen:
Intent intent = new Intent(this, MyComponent.class);
startActivity(intent);
Emellertid skickas en implicit avsikt över systemet för alla applikationer installerade på användarens enhet som kan hantera denna avsikt. Detta används för att dela information mellan olika applikationer.
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
}
Mer information om skillnaderna finns i Android Developer-dokumenten här: Intent Resolution
Implicita avsikter
Implicita avsikter namnger inte en specifik komponent utan förklarar istället en allmän åtgärd att utföra, vilket gör att en komponent från en annan app kan hantera den.
Om du till exempel vill visa användaren en plats på en karta kan du använda en implicit avsikt för att begära att en annan kapabel app visar en specificerad plats på en karta.
Exempel:
// 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);
}