chrome android 未知方案
chrome android unknown scheme
我在我的应用程序中使用 branch.io 的深层链接。应用程序生成 url 并使用自定义方案打开它。它在原生 android brawser、firefox 和 opera-mini 上正常,但在 chrome-android 和 ERR_UNKNOWN_URL_SCHEME
上失败
代码如下:
清单
<activity
android:launchMode="singleTask"
android:name=".ui.activity.ShareActivity"
android:screenOrientation="portrait">
<intent-filter>
<data android:scheme="myapp" android:host="open" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
生成 url 的代码(文档:https://dev.branch.io/getting-started/creating-links-in-apps/guide/android/):
public static void generateShortUrl(@NonNull Context aContext,
@Nullable String aMediaId,
@Nullable String aCollectionId,
@NonNull CanonicalIdentifier aCanonicalIdentifier,
@NonNull String aDesktopUrl,
@NonNull Branch.BranchLinkCreateListener aListener){
BranchUniversalObject branchUniversalObject = new BranchUniversalObject()
.setCanonicalIdentifier(String.valueOf(aCanonicalIdentifier.ordinal() + 1))
.setContentIndexingMode(BranchUniversalObject.CONTENT_INDEX_MODE.PUBLIC)
.addContentMetadata(SHARE_MEDIA_ID, aMediaId);
if(BuildConfig.DEBUG){
Log.e("BranchConfigTest","share date:"+branchUniversalObject.convertToJson().toString());
}
if(!TextUtils.isEmpty(aCollectionId))
branchUniversalObject.addContentMetadata(SHARE_COLLECTION_ID,aCollectionId);
if(!TextUtils.isEmpty(aMediaId))
branchUniversalObject.addContentMetadata(SHARE_MEDIA_ID,aMediaId);
LinkProperties linkProperties = new LinkProperties()
.setFeature("sharing")
.addControlParameter("$desktop_url", aDesktopUrl);
branchUniversalObject.generateShortUrl(aContext,linkProperties,aListener);
}
Alex 和 Branch 在这里:不幸的是,这是 Chrome 的一个已知问题。基本上,在 Chrome 40 的某个版本中,已决定键入和粘贴的 URL 应该防止自动重定向,就像 Branch 用来打开 Play 商店或启动您的应用程序一样。我们 worked on a solution with the Chromium team last summer,但几周前我们注意到该问题仅针对 输入的 URL 得到解决,而不是针对用户直接粘贴到 [=] 的 URL 20=]的地址栏。
好消息是,在野外,这是非常非常罕见的。它通常仅由开发人员在 Branch 集成的测试阶段触发 — 绝大多数用户只会 click 链接(而不是粘贴 URL),因此永远不会遇到这种情况。显然这仍然不是一个理想的解决方案,所以如果您愿意,请随时 file a radar with Chromium。我们可以支持它并要求我们的团队也提供示例。
我在我的应用程序中使用 branch.io 的深层链接。应用程序生成 url 并使用自定义方案打开它。它在原生 android brawser、firefox 和 opera-mini 上正常,但在 chrome-android 和 ERR_UNKNOWN_URL_SCHEME
上失败代码如下: 清单
<activity
android:launchMode="singleTask"
android:name=".ui.activity.ShareActivity"
android:screenOrientation="portrait">
<intent-filter>
<data android:scheme="myapp" android:host="open" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
生成 url 的代码(文档:https://dev.branch.io/getting-started/creating-links-in-apps/guide/android/):
public static void generateShortUrl(@NonNull Context aContext,
@Nullable String aMediaId,
@Nullable String aCollectionId,
@NonNull CanonicalIdentifier aCanonicalIdentifier,
@NonNull String aDesktopUrl,
@NonNull Branch.BranchLinkCreateListener aListener){
BranchUniversalObject branchUniversalObject = new BranchUniversalObject()
.setCanonicalIdentifier(String.valueOf(aCanonicalIdentifier.ordinal() + 1))
.setContentIndexingMode(BranchUniversalObject.CONTENT_INDEX_MODE.PUBLIC)
.addContentMetadata(SHARE_MEDIA_ID, aMediaId);
if(BuildConfig.DEBUG){
Log.e("BranchConfigTest","share date:"+branchUniversalObject.convertToJson().toString());
}
if(!TextUtils.isEmpty(aCollectionId))
branchUniversalObject.addContentMetadata(SHARE_COLLECTION_ID,aCollectionId);
if(!TextUtils.isEmpty(aMediaId))
branchUniversalObject.addContentMetadata(SHARE_MEDIA_ID,aMediaId);
LinkProperties linkProperties = new LinkProperties()
.setFeature("sharing")
.addControlParameter("$desktop_url", aDesktopUrl);
branchUniversalObject.generateShortUrl(aContext,linkProperties,aListener);
}
Alex 和 Branch 在这里:不幸的是,这是 Chrome 的一个已知问题。基本上,在 Chrome 40 的某个版本中,已决定键入和粘贴的 URL 应该防止自动重定向,就像 Branch 用来打开 Play 商店或启动您的应用程序一样。我们 worked on a solution with the Chromium team last summer,但几周前我们注意到该问题仅针对 输入的 URL 得到解决,而不是针对用户直接粘贴到 [=] 的 URL 20=]的地址栏。
好消息是,在野外,这是非常非常罕见的。它通常仅由开发人员在 Branch 集成的测试阶段触发 — 绝大多数用户只会 click 链接(而不是粘贴 URL),因此永远不会遇到这种情况。显然这仍然不是一个理想的解决方案,所以如果您愿意,请随时 file a radar with Chromium。我们可以支持它并要求我们的团队也提供示例。