Java ActivityEventListener不是抽象的,并且不重写抽象方法onNewIntent(Intent)
当Java ActivityEventListener不是抽象的,并且不重写抽象方法onNewIntent(Intent),java,android,react-native,Java,Android,React Native,当生成这是文件的完整源代码时,我收到此错误。。。。。。。。。。。。。。。。。。。。。。。。在下面 这是react native的插件 完全错误如下所示 local/Android/src/main/java/com/kmlidc/RNShareLocal/RNShareLocalManager.java:51:错误:RNShareLocalManager.RNShareLocalActivityEventListener不是抽象的,并且不重写ActivityEventListener中的抽象方法
生成
这是文件的完整源代码时,我收到此错误。。。。。。。。。。。。。。。。。。。。。。。。在下面
这是react native的插件
完全错误如下所示
local/Android/src/main/java/com/kmlidc/RNShareLocal/RNShareLocalManager.java:51:错误:RNShareLocalManager.RNShareLocalActivityEventListener不是抽象的,并且不重写ActivityEventListener中的抽象方法onNewIntent(Intent)
私有类RNShareLocalActivityEventListener实现ActivityEventListener{
^
这是一个简单的社交分享插件
public class RNShareLocalManager extends ReactContextBaseJavaModule implements ActivityEventListener{
private ReactApplicationContext reactContext;
private Callback callback;
final int SHARE_REQUEST = 500;
public RNShareLocalManager(ReactApplicationContext reactContext) {
super(reactContext);
this.reactContext = reactContext;
this.reactContext.addActivityEventListener(new RNShareLocalActivityEventListener());
}
@Override
public String getName() {
return "RNShareLocal";
}
private class RNShareLocalActivityEventListener implements ActivityEventListener {
public void onActivityResult(Activity activity, final int requestCode, final int resultCode, final Intent intent) {
if (requestCode == SHARE_REQUEST) {
callback.invoke("success");
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
}
}
public void onActivityResult(Activity activity, int requestCode, int resultCode, Intent data) {
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
}
public void onNewIntent(Intent intent) {
}
@ReactMethod
public void message(String winTitle,String subject,String message,ReadableArray component, Callback callback) {
this.callback = callback;
Intent intent=new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_SUBJECT,subject);
intent.putExtra(Intent.EXTRA_TEXT,message);
intent.setType("text/plain");
Intent chooser = Intent.createChooser(intent, winTitle);
chooser.addCategory(Intent.CATEGORY_DEFAULT);
//是否指定App打开
if(component != null && component.size() == 2) {
intent.setComponent(new ComponentName(component.getString(0), component.getString(1)));
}
getCurrentActivity().startActivityForResult(chooser,SHARE_REQUEST);
}
@ReactMethod
public void link(String winTitle,String subject,String url,ReadableArray component, Callback callback) {
this.callback = callback;
Intent intent=new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_SUBJECT,subject);
intent.putExtra(Intent.EXTRA_TEXT, url);
intent.setType("text/html");
Intent chooser = Intent.createChooser(intent, winTitle);
chooser.addCategory(Intent.CATEGORY_DEFAULT);
//是否指定App打开
if(component != null && component.size() == 2) {
intent.setComponent(new ComponentName(component.getString(0), component.getString(1)));
}
getCurrentActivity().startActivityForResult(chooser,SHARE_REQUEST);
}
@ReactMethod
public void pictures(String winTitle,String subject,String message,ReadableArray imagesFile,ReadableArray component, Callback callback) {
this.callback = callback;
ArrayList<Uri> uris = new ArrayList<Uri>();
for(int i=0; i<imagesFile.size();i++){
uris.add(Uri.parse(imagesFile.getString(i)));
}
Intent intent=new Intent(Intent.ACTION_SEND_MULTIPLE);
intent.putExtra(Intent.EXTRA_SUBJECT,subject);
intent.putExtra(Intent.EXTRA_TEXT, message);
intent.putExtra(Intent.EXTRA_STREAM, uris);
intent.putExtra ("Kdescription", message);
intent.setType("image/*");
Intent chooser = Intent.createChooser(intent, winTitle);
chooser.addCategory(Intent.CATEGORY_DEFAULT);
//是否指定App打开
if(component != null && component.size() == 2) {
intent.setComponent(new ComponentName(component.getString(0), component.getString(1)));
}
getCurrentActivity().startActivityForResult(chooser,SHARE_REQUEST);
}
@ReactMethod
public void downloadImage(ReadableArray imagesUrl, Promise promise){
List<String> paths = new ArrayList<String>();
for(int i=0; i<imagesUrl.size();i++){
String imageUrl = imagesUrl.getString(i);
String fileName = i + ".jpg";
String path = this.download(imageUrl,fileName);
paths.add(path);
}
JSONArray array = new JSONArray(paths);
promise.resolve(array.toString());
}
//下载图片并保存
public String download( String imageUrl, String fileName) {
final String savePath = getReactApplicationContext().getExternalCacheDir() + "/" + fileName;
try {
File f = new File(savePath);
File dir = f.getParentFile();
if(!dir.exists())
dir.mkdirs();
FileOutputStream os = new FileOutputStream(f);
byte[] data = getImage(imageUrl);
os.write(data);
os.close();
} catch (Exception e) {
e.getLocalizedMessage();
}
return "file://" + savePath;
}
/*
* 获取网络图片
*/
public byte[] getImage(String imageUrl) throws Exception{
URL url = new URL(imageUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5 * 1000);
conn.setRequestMethod("GET");
InputStream inStream = conn.getInputStream();
if(conn.getResponseCode() == HttpURLConnection.HTTP_OK){
return readStream(inStream);
}
return null;
}
/*
获取图片流数据
*/
public static byte[] readStream(InputStream inStream) throws Exception{
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while( (len=inStream.read(buffer)) != -1){
outStream.write(buffer, 0, len);
}
outStream.close();
inStream.close();
return outStream.toByteArray();
}
公共类RNShareLocalManager扩展ReactContextBaseJavaModule实现ActivityEventListener{
私有ReactApplicationContext reactContext;
私有回调;
最终整数共享请求=500;
公共RNShareLocalManager(ReactApplicationContext reactContext){
超级(反应上下文);
this.reactContext=reactContext;
this.reactContext.addActivityEventListener(新的RNShareLocalActivityEventListener());
}
@凌驾
公共字符串getName(){
返回“RNShareLocal”;
}
私有类RNShareLocalActivityEventListener实现ActivityEventListener{
ActivityResult上的公共void(活动活动、最终int请求代码、最终int结果代码、最终意图){
if(requestCode==共享请求){
回调。调用(“成功”);
}
}
@凌驾
ActivityResult上的公共void(int请求代码、int结果代码、意图数据){
}
}
ActivityResult上的公共void(活动活动、int请求代码、int结果代码、意图数据){
}
@凌驾
ActivityResult上的公共void(int请求代码、int结果代码、意图数据){
}
公共帐篷(意向){
}
@反应法
公共无效消息(字符串winTitle、字符串主题、字符串消息、ReadableArray组件、回调){
this.callback=回调;
意向意向=新意向(意向.行动\发送);
意图.额外(意图.额外主题,主题);
intent.putExtra(intent.EXTRA_文本、消息);
intent.setType(“文本/普通”);
Intent chooser=Intent.createChooser(Intent,winTitle);
chooser.addCategory(Intent.CATEGORY\u默认值);
//是否指定应用程序打开
if(component!=null&&component.size()=2){
intent.setComponent(新组件名(component.getString(0)、component.getString(1));
}
getCurrentActivity().startActivityForResult(选择器,共享请求);
}
@反应法
公共无效链接(字符串winTitle、字符串主题、字符串url、ReadableArray组件、回调){
this.callback=回调;
意向意向=新意向(意向.行动\发送);
意图.额外(意图.额外主题,主题);
intent.putExtra(intent.EXTRA_文本,url);
intent.setType(“text/html”);
Intent chooser=Intent.createChooser(Intent,winTitle);
chooser.addCategory(Intent.CATEGORY\u默认值);
//是否指定应用程序打开
if(component!=null&&component.size()=2){
intent.setComponent(新组件名(component.getString(0)、component.getString(1));
}
getCurrentActivity().startActivityForResult(选择器,共享请求);
}
@反应法
公共无效图片(字符串winTitle、字符串主题、字符串消息、ReadableArray图像文件、ReadableArray组件、回调){
this.callback=回调;
ArrayList URI=新的ArrayList();
对于(int i=0;i请实现onNewIntent()
您需要覆盖那些重要的方法,即onNewIntent,即它们是该类的被覆盖方法
点击后会出现一个小灯泡的错误点,您可以实现所需的方法。我已经尝试了,错误仍然显示,我将提供完整的源代码,您可以帮我看一下吗
private class RNShareLocalActivityEventListener implements ActivityEventListener {
public void onActivityResult(Activity activity, final int requestCode, final int resultCode, final Intent intent) {
if (requestCode == SHARE_REQUEST) {
callback.invoke("success");
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
}
}