uni-app 安卓配置targetSdkVersion过高导致schemes不起作用 无法跳转到app

发布于 1周前 作者 ionicwang 来自 Uni-App

uni-app 安卓配置targetSdkVersion过高导致schemes不起作用 无法跳转到app

targetSdkVersion设置21就可以正常跳转但会出现手机兼容问题 不配置或者配置30就会出现无法跳到app

1 回复

在处理uni-app中关于安卓配置targetSdkVersion过高导致schemes不起作用的问题时,我们需要确保应用能够正确接收并处理外部通过URL Scheme发起的跳转请求。这通常涉及到AndroidManifest.xml的配置和代码层面的处理。以下是一个可能的解决方案,涉及修改AndroidManifest.xml和Java/Kotlin代码来接收并处理URL Scheme。

1. 修改AndroidManifest.xml

首先,确保你的AndroidManifest.xml中配置了正确的<intent-filter>来接收URL Scheme。例如,如果你的app的scheme是myapp

<activity
    android:name=".MainActivity"
    android:label="@string/app_name"
    android:launchMode="singleTask"
    android:theme="@style/AppTheme.NoActionBar">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <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="myapp" android:host="*" />
    </intent-filter>
</activity>

2. 处理URL Scheme在Activity中的接收

MainActivity(或你的启动Activity)中,你需要重写onNewIntent方法来处理新的Intent,特别是当应用已经在前台运行时接收到的URL Scheme跳转。

// MainActivity.java (或 MainActivity.kt,如果是Kotlin)
@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    setIntent(intent);
    handleIntent(intent);
}

private void handleIntent(Intent intent) {
    if (Intent.ACTION_VIEW.equals(intent.getAction())) {
        Uri uri = intent.getData();
        if (uri != null) {
            String scheme = uri.getScheme();
            String host = uri.getHost();
            String path = uri.getPath();
            // 根据scheme, host, path处理不同的URL
            if ("myapp".equals(scheme)) {
                // 处理你的URL Scheme逻辑
                // 例如,根据path跳转到不同的页面
            }
        }
    }
}

注意事项

  • 确保targetSdkVersioncompileSdkVersion与你使用的Android API级别兼容。
  • 在某些Android版本中,特别是从Android 10(API级别29)开始,对外部应用的Intent处理有了更严格的限制,确保你的应用有适当的权限处理这些Intent。
  • 测试你的应用在不同Android版本上的行为,确保URL Scheme跳转在所有目标版本上都能正常工作。

通过上述配置和代码修改,你应该能够解决因targetSdkVersion过高导致的schemes不起作用的问题。

回到顶部