社会化分享非SDK实现

作者: JervieQin | 来源:发表于2018-04-29 22:00 被阅读25次

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


    首先,我们制作一个分享界面,其实就是一个预先用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<AndroidJavaObject>("setAction", intentClass.GetStatic<string>("ACTION_SEND"));
                AndroidJavaClass uriClass = new AndroidJavaClass("android.net.Uri");
                AndroidJavaObject uriObject = uriClass.CallStatic<AndroidJavaObject>("parse", "file://" + destination1);
                intentObject.Call<AndroidJavaObject>("putExtra", intentClass.GetStatic<string>("EXTRA_STREAM"),
                uriObject);
                intentObject.Call<AndroidJavaObject>("putExtra", intentClass.GetStatic<string>("EXTRA_TEXT"),
                "中国传统文化普及引用《孔方》上架啦,欢迎前往酷安应用市场下载。");
                intentObject.Call<AndroidJavaObject>("setType", "image/jpeg");
                AndroidJavaClass unity = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
                AndroidJavaObject currentActivity = unity.GetStatic<AndroidJavaObject>("currentActivity");
                AndroidJavaObject chooser = intentClass.CallStatic<AndroidJavaObject>("createChooser",
                intentObject, "感谢分享");
                currentActivity.Call("startActivity", chooser);
                yield return new WaitForSeconds(1f); //WaitForSecondsRealtime(1f);  
            }
    

    完整代码

    相关文章

      网友评论

        本文标题:社会化分享非SDK实现

        本文链接:https://www.haomeiwen.com/subject/lksalftx.html