allran / fl_shared_link

Make your app appear on someone else's share list

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

fl_shared_link

Android 配置 (project/android/app/src/main/AndroidManifest.xml)

<!-- 注册接收分享 -->
<intent-filter>
    <action android:name="android.intent.action.SEND" />
    <category android:name="android.intent.category.DEFAULT" />
    <!--接收打开的文件类型-->
    <data android:mimeType="application/pdf" />
</intent-filter>
<!-- 注册默认打开事件,微信、QQ的其他应用打开 -->
<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />

    <data android:scheme="file" />
    <data android:scheme="content" />

    <!-- 接收打开的文件类型 -->
    <data android:mimeType="application/pdf" />
</intent-filter>
<!-- mimeType 部分可接收的类型 -->
<intent-filter>
    <data android:mimeType="image/*" />
    <data android:mimeType="text/*" />
    <data android:mimeType="application/msword" />
    <data
        android:mimeType="application/vnd.openxmlformats-officedocument.wordprocessingml.document" />
    <data android:mimeType="application/vnd.ms-excel" />
    <data android:mimeType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" />
    <data android:mimeType="application/vnd.ms-powerpoint" />
    <data
        android:mimeType="application/vnd.openxmlformats-officedocument.presentationml.presentation" />
    <data android:mimeType="application/pdf" />
</intent-filter>
  • 使用(Android)
void func() async {
  /// 获取 android 所有 Intent
  final intent = await FlSharedLink().intentWithAndroid;

  /// 当前获取到intent中的uri中带有文件路径,会自动转换为 文件真实路径 兼容微信或qq
  /// 微信或QQ 此方法会拷贝文件至当前app内部空间
  final realPath = await FlSharedLink().getRealFilePathWithAndroid(intent.id);

  FlSharedLink().receiveHandler(onIntent: (AndroidIntentModel? data) {
    /// 监听 android 所有的 intent 数据
    /// 被分享或被打开 携带的参数 都在这里获取
  });
}

IOS 配置 (project/ios/Runner/Info.plist) LSItemContentTypes详细

<key>LSSupportsOpeningDocumentsInPlace</key>
<string>No</string>
<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeName</key>
        <string>FlSharedLink</string>
        <key>LSHandlerRank</key>
        <string>Default</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>public.file-url</string>
            <string>public.image</string>
            <string>public.text</string>
            <string>public.movie</string>
            <string>public.url</string>
            <string>public.data</string>
        </array>
    </dict>
</array>
  • 使用(IOS)
void func() async {
  /// 通过universalLink启动app获取上一次启动携带的参数
  /// 通常 微信分享qq分享返回app中 
  final universalLink = await FlSharedLink().universalLinkWithIOS;

  /// 通过openUrl或handleOpenUrl启动app获取上一个启动携带的参数
  /// 通常 用 其他应用打开 分享 或 打开 携带的参数从这里获取
  final openUrl = await FlSharedLink().openUrlWithIOS;

  /// app首次启动 获取启动参数
  final Map? launchingOptionsWithIOS = await FlSharedLink().launchingOptionsWithIOS;

  FlSharedLink().receiveHandler(
      onUniversalLink: (IOSUniversalLinkModel? data) {
        /// 监听通过 universalLink 打开app 回调以及参数
      },
      onOpenUrl: (IOSOpenUrlModel? data) {
        /// 监听通过 openUrl或者handleOpenUrl 打开app 回调以及参数
      });
}

About

Make your app appear on someone else's share list

License:MIT License


Languages

Language:Dart 57.4%Language:Kotlin 21.6%Language:Swift 14.2%Language:Ruby 6.7%Language:Objective-C 0.1%