如何解决React-native分享不和
我正在一个项目中实现一项功能,我们希望用户能够分享不和谐的帖子。使用https://react-native-community.github.io/react-native-share/docs/share-single
在Facebook或Twitter上实现共享很容易但是shareSingle上不支持discord,并且我不希望共享按钮调用“本机共享”菜单,该菜单可以链接到discord,我希望discord图标直接重定向到discord。但是我什至找不到一种方法来通过URL模式或通用链接来打开discord应用程序以触发该应用程序(discord://或discord:// discord或discordapp:// ...)。
我试图找到一种访问本机共享的方法,以便单独打开不和谐共享,但找不到方法。
有人有没有实现不和谐共享,并且有任何关于如何以本机实现的技巧?
解决方法
您可以创建一个fork项目并添加以下文件:
android / src / main / java / cl / json / social / DiscordShare.java
package cl.json.social;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import java.io.File;
import android.os.Environment;
import android.net.Uri;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReadableMap;
public class DiscordShare extends SingleShareIntent {
private static final String PACKAGE = "com.discord";
private static final String PLAY_STORE_LINK = "https://play.google.com/store/apps/details?id=com.discord";
public DiscordShare(ReactApplicationContext reactContext) {
super(reactContext);
}
@Override
public void open(ReadableMap options) throws ActivityNotFoundException {
super.open(options);
// extra params here
this.openIntentChooser();
}
@Override
protected String getPackage() {
return PACKAGE;
}
@Override
protected String getDefaultWebLink() {
return null;
}
@Override
protected String getPlayStoreLink() {
return PLAY_STORE_LINK;
}
}
编辑 android / src / main / java / cl / json / RNShareModule.java
package cl.json;
// ...
import cl.json.social.DiscordShare;
public class RNShareModule extends ReactContextBaseJavaModule implements ActivityEventListener {
// ...
private enum SHARES {
facebook,generic,pagesmanager,twitter,whatsapp,instagram,instagramstories,googleplus,email,pinterest,messenger,snapchat,sms,linkedin,discord; // ADDED
public static ShareIntent getShareClass(String social,ReactApplicationContext reactContext) {
SHARES share = valueOf(social);
switch (share) {
case generic:
return new GenericShare(reactContext);
case facebook:
return new FacebookShare(reactContext);
case pagesmanager:
return new FacebookPagesManagerShare(reactContext);
case twitter:
return new TwitterShare(reactContext);
case whatsapp:
return new WhatsAppShare(reactContext);
case instagram:
return new InstagramShare(reactContext);
case instagramstories:
return new InstagramStoriesShare(reactContext);
case googleplus:
return new GooglePlusShare(reactContext);
case email:
return new EmailShare(reactContext);
case pinterest:
return new PinterestShare(reactContext);
case sms:
return new SMSShare(reactContext);
case snapchat:
return new SnapChatShare(reactContext);
case messenger:
return new MessengerShare(reactContext);
case linkedin:
return new LinkedinShare(reactContext);
case discord:
return new DiscordShare(reactContext); // ADDED
default:
return null;
}
}
};
}
// ...
最后编辑 index.js
//...
class RNShare {
//...
static Social = {
FACEBOOK: NativeModules.RNShare.FACEBOOK || 'facebook',FACEBOOK_STORIES: NativeModules.RNShare.FACEBOOK_STORIES || 'facebook-stories',PAGESMANAGER: NativeModules.RNShare.PAGESMANAGER || 'pagesmanager',TWITTER: NativeModules.RNShare.TWITTER || 'twitter',WHATSAPP: NativeModules.RNShare.WHATSAPP || 'whatsapp',INSTAGRAM: NativeModules.RNShare.INSTAGRAM || 'instagram',INSTAGRAM_STORIES: NativeModules.RNShare.INSTAGRAM_STORIES || 'instagramstories',GOOGLEPLUS: NativeModules.RNShare.GOOGLEPLUS || 'googleplus',EMAIL: NativeModules.RNShare.EMAIL || 'email',PINTEREST: NativeModules.RNShare.PINTEREST || 'pinterest',LINKEDIN: NativeModules.RNShare.LINKEDIN || 'linkedin',SMS: NativeModules.RNShare.SMS || 'sms',DISCORD: NativeModules.RNShare.DISCORD || 'discord',// ADDED
};
// ...
}
在您的项目中使用:
Share.shareSingle({
title: 'test',message: 'hola mundo',url: 'https://json.cl',social: Share.Social.DISCORD,})
.then((res) => {
console.log(res);
})
.catch((err) => {
err && console.log(err);
});
结果:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。