2013-01-06 20 views
6

Con gli app store Android che offrono API specifiche del marketplace, come faccio a creare un'app per Android che utilizza in modo condizionale librerie specifiche del fornitore? Ad esempio, Amazon offre le proprie API di acquisto in-app e "GameCircle". Google ha le proprie API di licenza e ora Ouya avrà le proprie API per i controller IAP e hardware.Come utilizzare in modo condizionale le API specifiche del fornitore per le app Android?

Con la proliferazione di questi SDK specifici del fornitore sta diventando difficile mantenere diversi build separati dei miei giochi Android. Mi piacerebbe sapere come costruire i miei progetti in modo che il mio codice possa solo verificare in runtime per varie API e usarli se disponibili. Qualcosa come

if (amazon api is available) 
    // Do some amazon-specific stuff 

In fase di build collegherei con TUTTE le librerie quindi caricare la stessa app universale per ogni negozio.

+1

Probabilmente la tua risposta varierà in base alla libreria e, in pochi, saranno in grado di fornire una risposta. , o, meglio ancora, spiega come usi ognuno di essi (es. ''?) – CommonsWare

+0

Puoi usare una variabile 'booleana finale statica pubblica 'per ogni API, quindi controllarne il valore quando fai riferimento a essa. Penso che si tratti della migliore soluzione valida per tutte le dimensioni che troverai, come dichiarato da CommonsWare, altre soluzioni saranno specifiche per le API – Eric

+0

Almeno per l'API di Amazon Payments, so che entra nella modalità sandbox se non riesce a connettersi –

risposta

5

Attualmente lo sto utilizzando.

private boolean isAmazonInstall() 
{ 
    PackageManager pm = getPackageManager(); 
    String installationSource = pm.getInstallerPackageName(getPackageName()); 
    if (installationSource != null && installationSource.startsWith("com.amazon")) 
    { 
        return true; 
    } 
      return false; 
} 

Presumibilmente, per un'amazzone installare, il valore di ritorno di getInstallerPackageName è "com.amazon.venezia". Per le applicazioni installate da Google Play, il risultato è "com.android.vending" (anche se era "com.google.android.feedback" .Impostazioni manuali APK restituiscono null.

Non sono stato in grado di trova conferma ufficiale che questo approccio è valido, ma non sono stato in grado di trovare un approccio migliore

+0

A dire il vero, questo sembra un modo approssimativo di procedere, ma in assenza di un "approccio migliore" sarà finisci il lavoro. Grazie – James

+0

Accetto completamente. è un po 'approssimativo. –

+0

cool, come potrebbe funzionare per il mondo blackberry? – CQM

Problemi correlati