2010-06-27 4 views
4

Je suis en train de créer une application Android qui a besoin d'utiliser OAuth pour authentifier (avec l'API de données Google Wave)modèle personnalisé ne semble pas lancer dans l'intention de l'application

J'ai spécifié un système personnalisé dans mon AndroidManifest.xml de sorte que toute vue sur une URL commençant par « braindump: // » devrait aller à mon application:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="org.enigmagen.braindump" 
    android:versionName="0.1" 
    android:versionCode="1"> 

    <uses-sdk android:minSdkVersion="7"></uses-sdk> 
    <uses-permission android:name="android.permission.INTERNET"></uses-permission> 

    <application 
     android:icon="@drawable/icon" 
     android:label="@string/app_name" 
     android:debuggable="true"> 

     <activity 
      android:name=".BrainDump" 
      android:label="@string/app_name" 
      android:launchMode="singleInstance"> 

      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
       <category android:name="android.intent.category.BROWSABLE" /> 
       <data android:scheme="braindump" /> 
      </intent-filter> 

     </activity> 

    </application> 

</manifest> 

Tout ce qui arrive est bien qu'après la redirection, l'adresse du navigateur affiche l'URL correcte, mais le le contenu de la page est

Vous n'avez pas la permission d'ouvrir est la page. braindump: // rest_of_address_here

Existe-t-il une autorisation spécifique devant être définie pour autoriser ce type de comportement?

Répondre

0

Selon le common tasks qui devrait être:

<scheme android:name="braindump" /> 
+0

Cela semble dépendre de l'endroit où vous regardez http://developer.android.com/guide/topics/manifest/data-element.html – Cylindric

8

J'ai eu exactement le même problème (OAuth) et voilà comment je le fixe.

J'ai séparé mon principal de la classe qui agira sur l'URI.

Voilà comment le AndroidManifest.xml devrait ressembler à:

<?xml version="1.0" encoding="utf-8"?> 

[snip] 

      <activity android:label="@string/app_name" android:name="MainActivity"> 
      <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
      </activity> 
      <activity android:label="@string/app_name" android:name="OAUTHActivity"> 
      <intent-filter> 
      <action android:name="android.intent.action.VIEW" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <category android:name="android.intent.category.BROWSABLE" /> 
      <data android:scheme="myscheme" android:host="oauth" /> 
      </intent-filter> 
      </activity> 
     </application> 

    [/snip] 

Et j'ai pu ouvrir URIs comme myscheme//oauth?oauth_verifier=xxx&oauth_token=yyy

5

En fait, il est possible de le faire avec une seule activité, la simple création d'un plus filtre d'intention. Comme ceci:

<activity android:name=".MyActivity" 
     android:label="@string/app_name"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
    <intent-filter> 
     <action android:name="android.intent.action.VIEW"/>  
     <category android:name="android.intent.category.DEFAULT"/> 
     <category android:name="android.intent.category.BROWSABLE" /> 
     <data android:scheme="my_scheme" android:host="my_app_host.com" /> 
    </intent-filter> 
</activity> 
1

Je ne pense pas que ce soit exactement la cause de votre problème, mais je suis cette même erreur « Vous n'êtes pas autorisé à ouvrir cette page » et c'était parce que je travaillais avec un système avec une lettre majuscule. par exemple "Celly" au lieu de "celly". Cela a fonctionné correctement dans l'émulateur, mais a échoué sur les périphériques réels. Changer tout en minuscules l'a corrigé.

+1

La même chose est arrivée à moi. Je ressens ta douleur. Je dois utiliser tous les minuscules. – AlcubierreDrive

Questions connexes