微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

React-Native [ANDROID] 深层链接“打开方式”重复

如何解决React-Native [ANDROID] 深层链接“打开方式”重复

说明

我已经为我的应用描述了一个深层链接意图。

<manifest 
  xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.company.appname"
>

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <application
      android:name=".MainApplication"
      android:label="@string/app_name"
      android:icon="@mipmap/ic_launcher"
      android:roundIcon="@mipmap/ic_launcher_round"
      android:allowBackup="false"
      android:theme="@style/AppTheme"
    >
      <activity
        android:name=".SplashActivity"
        android:theme="@style/SplashTheme"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
      </activity>

      <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
        android:launchMode="singleTask"
        android:windowSoftInputMode="adjustPan"
        android:exported="true"
      >
        <!-- <scheme>://<host>:<port>[<path>|<pathPrefix>|<pathPattern>] -->
        <intent-filter>
          <!-- com.company.appname://logout-->
          <data
            android:scheme="com.company.appname"
            android:host="logout"
          />

          <category android:name="android.intent.category.DEFAULT" />
          <category android:name="android.intent.category.broWSABLE" />
          <action android:name="android.intent.action.VIEW" />
        </intent-filter>
      </activity>

      <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
    </application>

</manifest>

当我跑步时

npx uri-scheme open com.company.appname://logout --android

我收到这个提示,它似乎显示重复。

Screenshot_1613643017

React Native 版本:

在终端中运行 react-native info 并在此处复制结果。

System:
    OS: macOS 10.15.6
    cpu: (16) x64 Intel(R) Core(TM) i9-9980HK cpu @ 2.40GHz
    Memory: 4.25 GB / 32.00 GB
    Shell: 5.7.1 - /bin/zsh
  Binaries:
    Node: 14.8.0 - /usr/local/bin/node
    Yarn: 1.22.4 - /usr/local/bin/yarn
    npm: 6.14.7 - /usr/local/bin/npm
    Watchman: 4.9.0 - /usr/local/bin/watchman
  Managers:
    CocoaPods: 1.10.0. - /usr/local/bin/pod
  SDKs:
    iOS SDK:
      Platforms: iOS 14.3,DriverKit 20.2,macOS 11.1,tvOS 14.3,watchOS 7.2
    Android SDK:
      API Levels: 29
      Build Tools: 29.0.3
      System Images: android-29 | Google Play Intel x86 Atom
      Android NDK: Not Found
  IDEs:
    Android Studio: 4.0 AI-193.6911.18.40.6626763
    Xcode: 12.3/12C33 - /usr/bin/xcodebuild
  Languages:
    Java: 1.8.0_282 - /usr/bin/javac
    Python: 2.7.16 - /usr/bin/python
  npmPackages:
    @react-native-community/cli: Not Found
    react: ^17.0.1 => 17.0.1 
    react-native: 0.63.2 => 0.63.2 
    react-native-macos: Not Found
  npmGlobalPackages:
    *react-native*: Not Found

重现步骤

提供重现问题的详细步骤列表。

  1. 配置 AndroidManifest 和我的一样
  2. 运行npx uri-scheme open com.company.appname://logout --android

预期结果

我希望能够在“打开方式”提示中看到一个选项。

解决方法

我遇到的问题是第三方库覆盖了我的意图

图书馆是https://github.com/FormidableLabs/react-native-app-auth

就我而言,切换显示 heremanifestPlaceholders 逻辑 对于 AndroidManifest XML 中的硬编码 intent,效果很好。 (https://github.com/openid/AppAuth-android#capturing-the-authorization-redirect)。

例如

<manifest ...
  xmlns:tools="http://schemas.android.com/tools"
>
  ...
  <activity
        android:name="net.openid.appauth.RedirectUriReceiverActivity"
        tools:node="replace">
    <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="com.example.app"/>
    </intent-filter>
  </activity>
  ...
</manifest>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。