Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Custom scheme doesn't seem to launch in the app intent

Tags:

android

oauth

I'm trying to create an Android app that needs to use OAuth to authenticate (with the Google Wave data API)

I've specified a custom scheme in my AndroidManifest.xml so that any views to a url beginning "braindump://" should go to my app:

<?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>

All that happens though is that after the redirect, the browser address shows the correct URL, but the page content is

You do not have permission to open this page. braindump://rest_of_address_here

Is there a specific permission that needs to be set to allow this sort of behaviour?

like image 454
Cylindric Avatar asked Dec 09 '22 15:12

Cylindric


1 Answers

I had the exact same problem (OAuth) and this is how I fixed it.

I've separated my Main from the class that will act on the URI.

Here's how the AndroidManifest.xml should look like:

<?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]

And I was able to open URIs like myscheme//oauth?oauth_verifier=xxx&oauth_token=yyy

like image 181
Adrian Spinei Avatar answered Feb 03 '23 22:02

Adrian Spinei