android
private static readonly string ShareTextureFilePath = Application.persistentDataPath + "/MLShare.jpg"; //截屏地址
public void SendToLine(string text, bool isImage, uint shareType, uint id, int itemId = 0) //text 分享文本 isImage 是否有图片 line 分享只能发生文字或者图片不能一起发
{
#if UNITY_ANDROID && !UNITY_EDITOR
try
{
var Intent = new AndroidJavaClass("android.content.Intent");
var ACTION_SEND = Intent.GetStatic<string>("ACTION_SEND");
var EXTRA_TEXT = Intent.GetStatic<string>("EXTRA_TEXT");
var EXTRA_STREAM = Intent.GetStatic<string>("EXTRA_STREAM");
var intent = new AndroidJavaObject("android.content.Intent");
intent.Call<AndroidJavaObject>("setClassName", "jp.naver.line.android", "jp.naver.line.android.activity.selectchat.SelectChatActivity");
intent.Call<AndroidJavaObject>("setAction", ACTION_SEND);
if (text != null && text != "")
{
intent.Call<AndroidJavaObject>("putExtra", EXTRA_TEXT, text);
intent.Call<AndroidJavaObject>("setType", "text/*");
}
else if (isImage)
{
using (AndroidJavaClass uri = new AndroidJavaClass("android.net.Uri"))
{
if(DeviceUtil.GetAndroidVersionCode()>=24)
{
AndroidJavaClass _unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject _currentActivity = _unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
var file = new AndroidJavaObject("java.io.File", ShareTextureFilePath);
AndroidJavaClass fileProvider = new AndroidJavaClass("android.support.v4.content.FileProvider");
var imgurl = fileProvider.CallStatic<AndroidJavaObject>("getUriForFile",_currentActivity,"com.mobile.legends.fileprovider",file);
intent.Call<AndroidJavaObject>("putExtra",EXTRA_STREAM, imgurl);
}
else
{
intent.Call<AndroidJavaObject>("putExtra", EXTRA_STREAM,uri.CallStatic<AndroidJavaObject>("parse", ShareTextureFilePath));
}
intent.Call<AndroidJavaObject>("setType", "image/*");
}
}
var UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
var currentActivity = UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
currentActivity.Call("startActivity", intent);//Intent.CallStatic<object>("createChooser", intent, ""));
}
catch (Exception e)
{
}
#elif (UNITY_IOS || UNITY_IPHONE) && !UNITY_EDITOR
_IOS_SendToLine(text, ShareTextureFilePath, isImage);
#endif
}
IOS
void _IOS_SendToLine(const char *url,const char *imgUrl,bool isImage)
{
if (isImage && imgUrl != NULL) {
UIImage *Image =[[UIImage alloc]initWithContentsOfFile:[NSString stringWithFormat:[NSString stringWithUTF8String:imgUrl],NSHomeDirectory()]];
UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
[pasteboard setData:UIImageJPEGRepresentation(Image , 1.0) forPasteboardType:@"public.jpeg"];
NSString *contentType = @"image";
NSString *urlString = [NSString
stringWithFormat:@"line://msg/%@/%@",
contentType, pasteboard.name];
NSURL *url = [NSURL URLWithString:urlString];
[[UIApplication sharedApplication] openURL:url];
}
else if (url != NULL) {
NSString *contentType = @"text";
NSString *urlString = [NSString
stringWithFormat:@"line://msg/%@/%@",
contentType, [[NSString stringWithUTF8String:url] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSURL *url = [NSURL URLWithString:urlString];
[[UIApplication sharedApplication] openURL:url];
}
}