React native Expo intent打开应用传递参数

w8ntj3qf  于 2023-04-07  发布在  React
关注(0)|答案(1)|浏览(163)

我必须确保打开一个应用程序,它是通过传递参数安装在设备上。在这种情况下的应用程序是火狐。
我发现了类似的东西,但我不知道它是否能帮助我:Link
我在Expo上找到了这个,但我不知道它是否符合我的要求:博览会
有什么建议吗

k10s72fa

k10s72fa1#

expo-intent-launcher库有一个IntentLauncherParams接口,必须实现该接口。要实现该接口,您需要在typescript. See: React Native TypeScriptSee: Expo Typescript中创建一个组件
1.创建实现IntentLauncherParams的IntentParams类。我使用构造函数来传递一些在我的情况下需要的默认值。

class IntentParams implements IntentLauncherParams {
  type?: string;
  category?: string;
  data?: string;
  flags?: number;
  packageName?: string;
  className?: string;
  extra?: Record<string, any>;
  constructor(flags?: number, extra?: Record<string, any>) {
    this.flags = flags;
    this.extra = extra;
  }
}

1.创建函数Foo()以启动Activity

const Foo = () => {
    try {
      const transaction = { requestedAmount: amount, currency: currency };
      const transactionJson = JSON.stringify(transaction);

      const extra: Record<string, any> = {
        extra1: "extra1parameter",
        extra2: "extra2parameter",
        extra3: transactionJson,
      };
      const params = new IntentParams(_MY_FLAG_, extra);

      startActivityAsync(_MY_ACTIVITY_, params)
        .then((t) => {
          console.log(t);
          setData(t.data);
        })
        .catch((err) =>
          console.error(
            `Foo inline: ${JSON.stringify(
              err.request
            )}: ${err}`
          )
        );
    } catch (error) {
      console.error(
        `Foo: ${JSON.stringify(
          error.request
        )}: ${error}`
      );
    }
  };

1.从组件中所需的位置运行函数。
1.请记住在开始时导入库

import { IntentLauncherParams, startActivityAsync } from "expo-intent-launcher";

我希望它能帮助你。

相关问题