-1

私のアプリでは、サーバーはこのリンクを送信します:しかし、appname://veryfy?email=test@mail.com&token=asdf-asdf-asdf-xcfghfghのような値を取得することは可能ですか?email= test@mail.comtoken = sdfdkgdkgjgfd

これまでのところ、マニフェスト内にこのインテント フィルターを追加しただけですが、アプリは呼び出されません。

<intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
                <action android:name="android.intent.action.SEND"/>
                <category android:name="android.intent.category.DEFAULT"/>

                <data android:mimeType="text/plain" android:scheme="appname://"/>
            </intent-filter>

ブラウザでリンクをクリックすると、これによりアプリが開くことに注意してください

4

4 に答える 4

3

次のようにアクティビティのインテントを取得することで、電子メールとトークンを取得できます。

    <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                    <action android:name="android.intent.action.SEND"/>
                    <category android:name="android.intent.category.DEFAULT"/>

                    <data android:mimeType="text/plain" android:scheme="https" 
                     android:host="api.myapp.com"
                     android:pathPrefix="/api/v2/verify"/>
       </intent-filter>

Intent intent = getIntent();
Uri data = intent.getData();
String email = data.getQueryParameter("email");
String token = data.getQueryParameter("token");
于 2015-09-24T13:08:55.050 に答える
0

フィルターのスキームは、appname:// ではなく、appname にする必要があります。

android:scheme="appname"
于 2015-09-24T13:05:58.347 に答える
0

これを試して:

<intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
            <action android:name="android.intent.action.VIEW"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <data android:mimeType="text/plain" android:scheme="appname"/>
</intent-filter>

および Web 上のリンク:

<a href="appname://veryfy?email=test@mail.com&token=asdf-asdf-asdf-xcfghfgh">

アクティビティでデータを取得する:

// check if this intent is started via custom scheme link
Intent intent = getIntent();
String action = intent.getAction();
if (action != null && action.equals(Intent.ACTION_VIEW) {
   Uri uri = intent.getData();
   String scheme = uri.getScheme();
   if (scheme.equals("appname") {
      String email = uri.getQueryParameter("email");
      String token = uri.getQueryParameter("token");
   }
}
于 2015-09-24T13:06:37.303 に答える
0

これを試して

    <activity
          android:name=".MainActivity"
          android:label="@string/title_activity_main" 
          android:exported="true">
        <intent-filter>
                        <action android:name="android.intent.action.MAIN" />
                        <category android:name="android.intent.category.LAUNCHER" />
                        <action android:name="android.intent.action.SEND"/>
                        <category android:name="android.intent.category.DEFAULT"/>

                        <data android:mimeType="text/plain" android:scheme="appname"/>
           </intent-filter>
</activity>

URL パラメータを取得するには、これをアクティビティに記述します

Uri data = getIntent().getData();
String scheme = data.getScheme(); 
String host = data.getHost(); 
List<String> params = data.getPathSegments();
String first = params.get(0); 
String second = params.get(1); 
于 2015-09-24T13:07:28.210 に答える