社会化分享非SDK实现

社会化分享功能对于任何软件来说都至关重要,今天来介绍一种基于安卓的社会化分享功能实现。


首先,我们制作一个分享界面,其实就是一个预先用PS做好的全屏大图。


SharePanel

然后,我们新建一个Share脚本,用来实现社会化分享功能。具体步骤如下:

  1. 写一个点击事件作为功能的入口,当点击分享按钮后执行功能。
 public void ShareBtnPress()
    {
        if (!isProcessing)   //避免重复点击分享按钮生效
        {
            CanvasShareObj.SetActive(true);
            StartCoroutine(ShareScreenshot());
        }
    }
  1. 接下来我们截屏。这里就用到了u3d预留的ScreenCapture.CaptureScreenshot(),这个api提供截图应用内截图功能,有两个可选参数:string filename(文件名) ; int superSize = 1(分辨率放大倍数)。这个api会将接下来的图片存放在相应平台的持久化路径下。
    所以,我们要通过
 Path.Combine(Application.persistentDataPath, "screenshot.png");

来获取它。

  1. 底部弹出分享popwindow。有写过安卓应用程序的应该对popwindow不陌生。unity预留了一些对应安卓的api(例如:AndroidInput , AndroidJavaClass , AndroidJavaObject等等,可翻阅官方文档)。以下代码,明显的,中文处是可替代的。
if (Application.platform == RuntimePlatform.Android)
        {
            AndroidJavaClass intentClass = new AndroidJavaClass("android.content.Intent");
            AndroidJavaObject intentObject = new AndroidJavaObject("android.content.Intent");
            intentObject.Call("setAction", intentClass.GetStatic("ACTION_SEND"));
            AndroidJavaClass uriClass = new AndroidJavaClass("android.net.Uri");
            AndroidJavaObject uriObject = uriClass.CallStatic("parse", "file://" + destination1);
            intentObject.Call("putExtra", intentClass.GetStatic("EXTRA_STREAM"),
            uriObject);
            intentObject.Call("putExtra", intentClass.GetStatic("EXTRA_TEXT"),
            "中国传统文化普及引用《孔方》上架啦,欢迎前往酷安应用市场下载。");
            intentObject.Call("setType", "image/jpeg");
            AndroidJavaClass unity = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
            AndroidJavaObject currentActivity = unity.GetStatic("currentActivity");
            AndroidJavaObject chooser = intentClass.CallStatic("createChooser",
            intentObject, "感谢分享");
            currentActivity.Call("startActivity", chooser);
            yield return new WaitForSeconds(1f); //WaitForSecondsRealtime(1f);  
        }

完整代码

你可能感兴趣的:(社会化分享非SDK实现)