unity调用android中分享

首先android项目不继承Activity继承自UnityPlayerActivity,把分享的都封装成一个方法,然后让unity去调用,下面有把android项目打成jar包的方法,unity项目中建Plugins然后建Andriod,Android文件夹下放打成的jar包,libs,res,AndroidManifest.xml.首先说下新浪微博的分享,新浪微博官方说调用新浪分享必须在主线程中,unity调用android中方法的时候都是新开启一个线程所以android中就这么处理

public void sharedSinaPicture(String path, Activity currentActivity)
  {
    currentActivity.runOnUiThread(new Runnable()
    {
      public void run()
      {
        try
        { }
        catch (WeiboShareException e)
        {
          e.printStackTrace();
          Toast.makeText(MainActivity.this, e.getMessage(), 1).show();
        }
      }
    });
其中currentActivity就是unity中传过来的,告诉android中主线程更新Ui.
unity中是这么写的
 if(GUILayout.Button("新浪分享文字加图片(图片是本地的)",GUILayout.Width(300),GUILayout.Height(100)))
		{
		
			
			using (AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
            {
                using( AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity"))
                {
                      jo.Call("sharedSinaPicture","/sdcard/pic.jpg","新浪分享文字加图片",jo);
                }
            }

		} 

 unity中设置PerPlatform Settings中

android的包名 版本 最小api级别都要一致.  

还有个问题是android的ID到unity重新编译了。

 

 在android里面findbyid
int id = R.xxx.yyy不要这么写了,写成int id = getResoutces().getIdentifier("xxx","yyy",“R文件的包名”);
说下微信的分享,微信是最让人头疼的,开始的时候怎么弄都不弹出界面,后来发现是因为签名的原因,不能用android打包的签名,用unity打包后的签名,而且这个签名每个机器都是不一样的,所以做的时候要注意
现在微信  新浪 人人网 腾讯微博分享功能均已实现,微信 新浪经过测试,人人网和腾讯微博现在只是我自己测试了下,好使.有需要的朋友们留言吧,代码不便上传

猜你喜欢

转载自201304154519.iteye.com/blog/1997786