www.openintents.org [email protected] Droidcon London 2010,28 October 2010
OpenIntents, Open Apps and Dependencies
Friedger Müffke
@fmdroid#openintents
No monoliths ..
but interconnectedcomponents
All apps are equal!
OpenIntents.org
● Discussion group since 2007● All about open applications and interoperability● Open source● List of Android libraries● Intents registry
● Backed by OpenIntents UG (haftungsbeschränkt)– Closed source apps– Organizer of droidcon
Intent registrywww.openintents.org
Browse and findintents, actions, applications, URIs, extras
Promote your ownintents and applications
Listen to talk tomorrow
As of October 2010:
>50 registered intents
Reuse components! Don't reinvent the wheel!
Dependency Manager
Applicationwith
dependencies
Dependency Manager
Appstore 1 with Content Provider Appstore 2
with Content Provider
Content Provider
of OI Website
1. Unresolvable Intent
2. Resolve Intent
3. ProvideIntent Filter
Info
UI for Choosing App
4. User chooses app
App with Dependencies<meta-data android:name = "org.openintents.dm.dependency-client" android:resource = "@xml/mandatory"/>
<dependencies xmlns:dm = "http://schemas.openintents.org/android/dependency-manager/1.0/client">
<!-- Implicit Intent --> <intent dm:component-type="activity"> <action dm:name="android.intent.action.BAZ" /> <category dm:name="android.intent.category.FOO" /> <category dm:name="android.intent.category.QUUX" /> <data dm:uri="http://foo.bar.org/" /> </intent> <!-- Implicit Intent with mime-type --> <intent dm:component-type="service"> <action dm:name="foo.bar.QuuxService" /> <data dm:mimeType="text/plain" /> </intent>
<!-- Explicit Intent --> <intent dm:component-type="receiver"> <component dm:name="foo.bar/.BazReceiver" /> </intent> </dependencies>
Manifest
mandatory.xml
Dependency Source
Content Provider– Declaration in Manifest.xml
<meta-data android:name="org.openintents.dm.dependency-source" android:resource="@xml/dependency_source"/>
– dependency_source.xml<dependency-source xmlns:dm="http://schemas.openintents.org/android/dependency-manager/1.0/source"
dm:authority="org.openintents.dm.teststore"/>
– Contract for Dependency Source
Open Apps (1)
● Declare intent filters in your Manifest● Publish your intent filters on
open-android-apps.appspot.com
● Explore intents and which apps do offer the corresponding functionality
Open Apps (2)
In the future
– Mark as inappropriate– Integration in dependency manager– Link to Intents Registry– Eclipse Integration
Participate!
● Tonight during the hackathon● OpenIntents repository at Google code● Android is open as are these issues
– Issue 4716: Support package dependency through uses-intent in Manifest
– Issue 3217: Support PackageManager.GET_INTENT_FILTERS
– Issue 4159: Market should allow developers to list extension points for their apps
More infoWeb site:
www.openintents.orgDeveloper group: http://groups.google.com/group/openintents
Code repository: http://openintents.googlecode.com