问题描述
我想把用户调用时ShareScreenshot方法的截图,用一段文字分享给他的朋友,所以我写了下面的代码
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class NativeAndroidShare : MonoBehavIoUr
{
public static NativeAndroidShare Instance;
bool isFocus = false;
string Subject,Message;
bool isProcessing = false;
private void Awake()
{
Instance = this;
}
void OnApplicationFocus(bool focusstatus)
{
isFocus = focusstatus;
}
public void ShareScreenshot(string subject,string message)
{
if (!isProcessing)
{
Subject = subject;
Message = message;
StartCoroutine(ShareScreenshotInAnroid());
}
}
IEnumerator ShareScreenshotInAnroid()
{
isProcessing = true;
// wait for graphics to render
yield return new WaitForEndOfFrame();
string screenShotPath = Application.persistentDataPath + "/" + "Screenshot.png";
ScreenCapture.CaptureScreenshot("Screenshot.png",1);
yield return new WaitForSeconds(0.5f);
if (!Application.isEditor)
{
//Create intent for action send
AndroidJavaClass intentClass = new AndroidJavaClass("android.content.Intent");
AndroidJavaObject intentObject = new AndroidJavaObject("android.content.Intent");
intentObject.Call<AndroidJavaObject>("setAction",intentClass.GetStatic<string>("ACTION_SEND"));
//create image URI to add it to the intent
AndroidJavaClass uriClass = new AndroidJavaClass("android.net.Uri");
AndroidJavaObject uriObject = uriClass.CallStatic<AndroidJavaObject>("parse","file://" + screenShotPath);
//put image and string extra
intentObject.Call<AndroidJavaObject>("putExtra",intentClass.GetStatic<string>("EXTRA_STREAM"),uriObject);
intentObject.Call<AndroidJavaObject>("setType","image/png");
intentObject.Call<AndroidJavaObject>("putExtra",intentClass.GetStatic<string>("EXTRA_SUBJECT"),Subject);
intentObject.Call<AndroidJavaObject>("putExtra",intentClass.GetStatic<string>("EXTRA_TEXT"),Message);
AndroidJavaClass unity = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject currentActivity = unity.GetStatic<AndroidJavaObject>("currentActivity");
AndroidJavaObject chooser = intentClass.CallStatic<AndroidJavaObject>("createChooser",intentObject,"Share your high score");
currentActivity.Call("startActivity",chooser);
}
yield return new WaitUntil(() => isFocus);
isProcessing = false;
}
}
当我在Android上测试时,截图正确,但共享代码没有运行,没有任何反应!你知道问题出在哪里吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)