我在我的应用程序中使用带有 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);
}