从 link 打开我的应用程序
Open my app from a link
在我的应用程序中,服务器发送此 link: appname://veryfy?email=test@mail.com&token=asdf-asdf-asdf-xcfghfgh
但是否有可能获得 email= test@mail.com
和 token = sdfdkgdkgjgfd
等值。
到目前为止,我只在我的清单中添加了这个 intent 过滤器,但没有调用该应用程序:
<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>
请注意,当在浏览器中单击 link 时,这应该会打开我的应用程序
过滤器中的方案应该只是 appname,而不是 appname://
android:scheme="appname"
试试这个:
<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>
和网络上的 link:
<a href="appname://veryfy?email=test@mail.com&token=asdf-asdf-asdf-xcfghfgh">
正在您的 Activity 中获取数据:
// 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");
}
}
试试这个
<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 参数,请将其写入您的 activity
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);
您可以通过获取 Activity 的意图来获取电子邮件和令牌,如下所示:
<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");
在我的应用程序中,服务器发送此 link: appname://veryfy?email=test@mail.com&token=asdf-asdf-asdf-xcfghfgh
但是否有可能获得 email= test@mail.com
和 token = sdfdkgdkgjgfd
等值。
到目前为止,我只在我的清单中添加了这个 intent 过滤器,但没有调用该应用程序:
<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>
请注意,当在浏览器中单击 link 时,这应该会打开我的应用程序
过滤器中的方案应该只是 appname,而不是 appname://
android:scheme="appname"
试试这个:
<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>
和网络上的 link:
<a href="appname://veryfy?email=test@mail.com&token=asdf-asdf-asdf-xcfghfgh">
正在您的 Activity 中获取数据:
// 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");
}
}
试试这个
<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 参数,请将其写入您的 activity
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);
您可以通过获取 Activity 的意图来获取电子邮件和令牌,如下所示:
<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");