如何通过 React Native 中的 Intent 启动和接收来自另一个应用程序的输出?

路易

我已经使用 VSCode 创建了 React Native 应用程序,现在,我必须使用微型 USB 主机集成读取器设备。

我已经安装了阅读器应用程序来测试 APK。基于网络,我可以通过我当前应用程序的意图调用阅读器应用程序。设备网络链接在这里

目前,我尝试了通过意图调用本机应用程序的搜索教程。但是我被困在放置脚本的方式上。我应该创建新文件/将脚本粘贴到现有文件下面/替换现有文件./android/app/src/main/java/com/myAppName/MainApplication.java以及如何调用和接收来自我的扫描仪类的输出./src/screens/scanScreens/mainScanner.js

以下是我所做的,但坚持下一步我应该做什么:-

  1. 原生模块
  2. 将 React-Native 模块集成到现有的原生应用程序 (Android)
  3. 在 Android 上使用 React Native 进行应用间通信
  4. 堆栈接受的答案
  5. react-native-intent-launcher

我当前的 MainActivity.java [更新]

package com.myappname;

import com.facebook.react.ReactActivity;
import com.facebook.react.ReactActivityDelegate;
import com.facebook.react.ReactRootView;
import com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView;

public class MainActivity extends ReactActivity {

    /**
     * Returns the name of the main component registered from JavaScript.
     * This is used to schedule rendering of the component.
     */
    @Override
    protected String getMainComponentName() {
        return "myAppName";
    }

    @Override
    protected ReactActivityDelegate createReactActivityDelegate() {
        return new ReactActivityDelegate(this, getMainComponentName()) {
        @Override
        protected ReactRootView createRootView() {
        return new RNGestureHandlerEnabledRootView(MainActivity.this);
        }
        };
    }
}
public class ShowKadModule extends ReactContextBaseJavaModule {

    @ReactMethod
    public void showKadApp() {
        final Activity activity = getCurrentActivity();
        Intent intent = new Intent ("com.causalidea.cikad.showkad.READ_MYKAD");
        Bundle extras = new Bundle ();
        extras.putBoolean ("READ_PHOTO", false); // Do not read the photo
        intent.putExtras (extras);
        activity.startActivityForResult (intent, 0); 
     }
     public ShowKadModule(ReactApplicationContext reactContext) {
        super(reactContext);
        // Add the listener for `onActivityResult`
        reactContext.addActivityEventListener(mActivityEventListener);
      }

      @Override
      public String getName() {
        return "ShowKadModule";
      }
     @Override
     public void onActivityResult(int requestCode, int resultCode, final Intent data) {
        if (resultCode == Activity.RESULT_OK) {
            extras = intent.getExtras ();

            if (extras != null) {
                extras.getString ("IC_NUMBER");
                extras.getString ("NAME");
                extras.getString ("GENDER");
                extras.getString ("CITIZENSHIP");

                extras.getString ("BIRTH_DATE");
                extras.getString ("RACE");
                extras.getString ("RELIGION");

                extras.getString ("ADDRESS_1");
                extras.getString ("ADDRESS_2");
                extras.getString ("ADDRESS_3");
                extras.getString ("POSTCODE");
                extras.getString ("CITY");
                extras.getString ("STATE");

                photoByteArray = extras.getByteArray ("PHOTO");

                if (photoByteArray != null) {
                    bitmap = BitmapFactory.decodeByteArray (photoByteArray, 0, photoByteArray.length);
                    imageView.setImageBitmap (bitmap);
                }
            }
        } else if (resultCode == Activity.RESULT_CANCELED) {

        }
     }
}
路易

在经历了这么多示例和教程之后,我找到了一个简单的解决方案。通过从这里安装 react-native-activity-result 。

我如何执行此操作如下:

import ActivityResult from 'react-native-activity-result';

_onLaunch = async () => {
    const activity = await ActivityResult.resolveActivity('com.causalidea.cikad.showkad.READ_MYKAD');
    if (!activity) {
        console.warn('Please install the othe app.');
        ToastAndroid.show(`MyKAD application reader is not install`, ToastAndroid.SHORT, ToastAndroid.BOTTOM);
    } else {
        console.log(`Activity will be handled by ${activity.package}`);
        ToastAndroid.show(`Activity will be handled by ${activity.package}`, ToastAndroid.SHORT, ToastAndroid.BOTTOM);
    }

    // Start an activity for a result
    let uniqueId = 0;
    let args = {READ_PHOTO: false};
    ToastAndroid.show(`Test`, ToastAndroid.SHORT, ToastAndroid.BOTTOM);
    const response = await ActivityResult.startActivityForResult(uniqueId, 'com.causalidea.cikad.showkad.READ_MYKAD', args);
    ToastAndroid.show(`Result code: ${response.resultCode}`, ToastAndroid.LONG, ToastAndroid.BOTTOM);


    if (response.resultCode !== ActivityResult.OK) {
        ToastAndroid.show(`Invalid result from activity.`, ToastAndroid.SHORT, ToastAndroid.BOTTOM);
        throw new Error('Invalid result from activity.');
    } else {
        console.log('Got the following response: ' + response.data);
        ToastAndroid.show(`Response:\n${JSON.stringify(response)}`, ToastAndroid.SHORT, ToastAndroid.BOTTOM);
    }

    // Finish an activity with a result. This will close the caller too.
    //ActivityResult.finish(ActivityResult.OK, 'com.causalidea.cikad.showkad.READ_MYKAD', args);
}

我可以启动另一个应用程序并等待活动结果,它会相应地进行操作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从iOS中的另一个应用程序打开设置应用程序-React Native

来自分类Dev

从React-Native应用程序中的另一个类访问静态变量?

来自分类Dev

从React-Native应用程序中的另一个类访问静态变量?

来自分类Dev

如何在React Native上的Kill应用程序中检测到一个应用程序?

来自分类Dev

如何通过 react-native-router -flux 在 react-native 中更新回(上一个)屏幕

来自分类Dev

如何通过在react native中单击一个平面列表图像来显示特定图像?

来自分类Dev

我如何在React Native中从另一个组件调用函数?

来自分类Dev

如何在React Native中导航到类组件中的另一个屏幕

来自分类Dev

如何在React Native中导航到类组件中的另一个屏幕

来自分类Dev

如何在React Native中导航到类组件中的另一个屏幕

来自分类Dev

如何在另一个文件中获取组件的状态 react native

来自分类Dev

React Native 为什么要加载来自另一个应用程序的 app.js?

来自分类Dev

如何在我的 React 应用程序中创建指向另一个页面的超链接?

来自分类Dev

如何通过 Intent 检索和分离数组中传递的多个数据从一个活动到另一个活动

来自分类Dev

如何在React Native中从另一个功能组件更改一个功能组件的状态?

来自分类Dev

如何从Android 30中的另一个应用程序启动活动

来自分类Dev

react-native 如何从另一个包装在 react-redux 中的 connect() 类调用函数?

来自分类Dev

如何在我自己的 Android 应用程序中启动另一个应用程序?

来自分类Dev

从React Native中的另一个组件导航后,如何刷新堆栈中已经存在的组件

来自分类Dev

React-Native:如何将组件中的项目与另一个组件中的项目绑定?

来自分类Dev

如何在React Native中通过Paypal进行汇款?

来自分类Dev

我如何在React Native中通过此对象映射?

来自分类Dev

如何在 React Native 中通过点击设置动态样式?

来自分类Dev

在React Native中如何在示例应用程序中使用N个视图

来自分类Dev

如何在另一个可可应用程序中嵌入一个可可应用程序并将其作为子进程启动

来自分类Dev

如何使用 react-native-gifted-chat 在聊天应用程序中只让一个用户在左侧,其他用户在右侧

来自分类Dev

在React Native(和Ignite)中,如何创建一个ListView(在选项卡中),当单击一个列表项时,它会导航到另一个容器?

来自分类Dev

如何将 Intent 从我的一个应用程序发送到我的另一个应用程序?

来自分类Dev

如何在react-native中在一个屏幕中同时添加“登录”和“注册”?

Related 相关文章

  1. 1

    从iOS中的另一个应用程序打开设置应用程序-React Native

  2. 2

    从React-Native应用程序中的另一个类访问静态变量?

  3. 3

    从React-Native应用程序中的另一个类访问静态变量?

  4. 4

    如何在React Native上的Kill应用程序中检测到一个应用程序?

  5. 5

    如何通过 react-native-router -flux 在 react-native 中更新回(上一个)屏幕

  6. 6

    如何通过在react native中单击一个平面列表图像来显示特定图像?

  7. 7

    我如何在React Native中从另一个组件调用函数?

  8. 8

    如何在React Native中导航到类组件中的另一个屏幕

  9. 9

    如何在React Native中导航到类组件中的另一个屏幕

  10. 10

    如何在React Native中导航到类组件中的另一个屏幕

  11. 11

    如何在另一个文件中获取组件的状态 react native

  12. 12

    React Native 为什么要加载来自另一个应用程序的 app.js?

  13. 13

    如何在我的 React 应用程序中创建指向另一个页面的超链接?

  14. 14

    如何通过 Intent 检索和分离数组中传递的多个数据从一个活动到另一个活动

  15. 15

    如何在React Native中从另一个功能组件更改一个功能组件的状态?

  16. 16

    如何从Android 30中的另一个应用程序启动活动

  17. 17

    react-native 如何从另一个包装在 react-redux 中的 connect() 类调用函数?

  18. 18

    如何在我自己的 Android 应用程序中启动另一个应用程序?

  19. 19

    从React Native中的另一个组件导航后,如何刷新堆栈中已经存在的组件

  20. 20

    React-Native:如何将组件中的项目与另一个组件中的项目绑定?

  21. 21

    如何在React Native中通过Paypal进行汇款?

  22. 22

    我如何在React Native中通过此对象映射?

  23. 23

    如何在 React Native 中通过点击设置动态样式?

  24. 24

    在React Native中如何在示例应用程序中使用N个视图

  25. 25

    如何在另一个可可应用程序中嵌入一个可可应用程序并将其作为子进程启动

  26. 26

    如何使用 react-native-gifted-chat 在聊天应用程序中只让一个用户在左侧,其他用户在右侧

  27. 27

    在React Native(和Ignite)中,如何创建一个ListView(在选项卡中),当单击一个列表项时,它会导航到另一个容器?

  28. 28

    如何将 Intent 从我的一个应用程序发送到我的另一个应用程序?

  29. 29

    如何在react-native中在一个屏幕中同时添加“登录”和“注册”?

热门标签

归档