Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React Native android:有意打开应用程序,将数据传递给javascript_Javascript_Android_Android Intent_React Native_React Native Android - Fatal编程技术网

React Native android:有意打开应用程序,将数据传递给javascript

React Native android:有意打开应用程序,将数据传递给javascript,javascript,android,android-intent,react-native,react-native-android,Javascript,Android,Android Intent,React Native,React Native Android,我需要在react原生android应用程序中读取NFC标签ID。我尝试使用nfc react本机模块,但不幸的是,它对我不起作用。所以我编辑了它 我浏览了所有关于在react-native中使用NFC标记的文档/文章,为react-native编写了自定义android(本机)组件,但没有成功 在这里有一些其他问题的帮助下,我可以注册应用程序,以便在设备上点击NFC标签时运行。但我无法将意图数据传递给javascript。我在某个地方读到,我需要注册活动以接收意图。但我没有任何本土活动 我非常

我需要在react原生android应用程序中读取NFC标签ID。我尝试使用nfc react本机模块,但不幸的是,它对我不起作用。所以我编辑了它

我浏览了所有关于在react-native中使用NFC标记的文档/文章,为react-native编写了自定义android(本机)组件,但没有成功

在这里有一些其他问题的帮助下,我可以注册应用程序,以便在设备上点击NFC标签时运行。但我无法将意图数据传递给javascript。我在某个地方读到,我需要注册活动以接收意图。但我没有任何本土活动

我非常感谢你的时间和关注。我在这方面工作了这么长时间,但没有成功

代码如下: 这是一个用于读取NFC标签的自定义模块(编辑的NFC react模块)

包es.tiarg.nfcreactnative;
导入com.facebook.react.bridge.ActivityEventListener;
导入com.facebook.react.bridge.ReactApplicationContext;
导入com.facebook.react.bridge.ReactContext;
导入com.facebook.react.bridge.ReactContextBaseJavaModule;
导入com.facebook.react.bridge.ReactMethod;
导入com.facebook.react.bridge.WritableMap;
导入com.facebook.react.bridge.WritableArray;
导入com.facebook.react.bridge.ReadableMap;
导入com.facebook.react.bridge.ReadableArray;
导入com.facebook.react.bridge.ReadableNativeArray;
导入com.facebook.react.bridge.Arguments;
导入com.facebook.react.bridge.Promise;
导入com.facebook.react.bridge.Callback;
导入com.facebook.react.bridge.WritableNativeArray;
导入com.facebook.react.bridge.WritableNativeMap;
导入com.facebook.react.bridge.LifecycleEventListener;
导入com.facebook.react.modules.core.DeviceEventManagerModule;
导入静态com.facebook.common.util.Hex.hextStringToByteArray;
导入android.app.Activity;
导入android.content.Intent;
导入android.nfc.NfcAdapter;
导入android.nfc.Tag;
导入android.nfc.tech.MifareClassic;
导入android.support.annotation.Nullable;
导入android.util.Log;
导入android.content.Context;
导入android.content.ServiceConnection;
导入android.os.RemoteException;
导入静态android.R.attr.data;
导入静态android.R.attr.defaultValue;
导入静态android.R.attr.x;
导入java.io.PrintWriter;
导入java.io.StringWriter;
导入java.math.biginger;
导入java.nio.ByteBuffer;
导入java.nio.IntBuffer;
导入java.util.Collection;
导入java.util.HashMap;
导入java.util.Map;
类NfcReactNativeModule扩展ReactContextBaseJavaModule实现ActivityEventListener、LifecycleEventListener{
私有ReactApplicationContext reactContext;
专用NfcAdapter mNfcAdapter;
最终受保护的静态字符[]HAX_ARRAY=“0123456789ABCDEF”.tocharray();
公共静态最终字符串TAG=“NFCCardID”;
公共NfcReactNativeModule(ReactApplicationContext reactContext){
超级(反应上下文);
this.reactContext=reactContext;
this.reactContext.addActivityEventListener(this);
this.reactContext.addLifecycleEventListener(this);
}
@凌驾
公共帐篷(意向){
Log.i(标记“获得新意图”);
手册内容(意图);
}
公共无效手册内容(意图){
String action=intent.getAction();
Log.i(标签,“新意图行动:”+行动);
if(NfcAdapter.ACTION_TAG_DISCOVERED.equals(ACTION)| NfcAdapter.ACTION_NDEF_DISCOVERED.equals(ACTION)){
Tag Tag=intent.getParcelableExtra(NfcAdapter.EXTRA_Tag);
字节[]id=tag.getId();
字符串serialNumber=bytesToHex(id);
WritableMap idData=Arguments.createMap();
idData.putString(“id”,serialNumber);
sendEvent(this.reactContext,“NFCCardID”,idData);
Log.i(标签,“来自nfc的序列号:”+序列号);
}否则{
Log.i(标记“错误:+操作”);
}
}
@凌驾
在hostresume()上公开作废{
//恢复活动`
}
@凌驾
public void onHostPause(){
//活动暂停`
}
@凌驾
公共无效onHostDestroy(){
//活动'onDestroy`
}
私有静态字符串bytesToHex(字节[]字节){
char[]hexChars=新字符[bytes.length*2];
对于(int j=0;j>>4];
hexChars[j*2+1]=HAX_数组[v&0x0F];
}
返回新字符串(hexChars);
}
@凌驾
活动结果的公共无效性(
最后活动,
最终int请求代码,
最终int结果代码,
最终意图(目的){
//intent.getData();
Log.i(标记,“从Intent接收的数据:“+Intent.getData()”);
}
@凌驾
公共字符串getName(){
返回“NfcReactNative”;
}
私有void sendEvent(ReactContext ReactContext,字符串eventName,@Nullable WritableMap参数){
反应上下文
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
.emit(事件名称、参数);
}

}
您是否以任何方式让它起作用?