友盟分享应该注意的问题,别掉入坑了

        现在很多的app项目中几乎都用到了第三分享,像shareSdk,Umeng 等,但是我们会发现在运行官网给的demo时,分享基本上都没问题,但是真正到自己集成的时候,你会发现各种bug,以下是个人在集成Umeng的时候遇到的几个问题:

   1、在新浪微博分享的时候,如果取消分享出现了如下问题:

        java.lang.ClassCastException: com.cttouzi.gezilicai.base.JbzApplication cannot be cast to android.app.Activity

       为什么会出现ClassCastException,似乎并没有哪个地方用到了JbzApplication ,后来去研究友盟sdk,发现 UMShareAPI是单例模式,初始化方法是public static UMShareAPI get(Context context);这个方法参数类型是Context, 所以传入的参数可以是Activity, 也可以是Applicaion的Context。 但在SDK内部使用的时候,有的地方做了Context到Activity的强转,如果UMShareAPI初始化方法里传的参数是Applicaion的Context, 就会出问题初始化的时候传入activity,果真就没问题了;


 2、qq分享分享成功了,但是点击返回应用时提示  “您取消了分享”

      出现这个问题,一般是你申请了qq的appId 和 key 后,在代码里进行设置

  //微信 appid appsecret
        PlatformConfig.setWeixin("wx6c2ed50bb9909f39", "2c4b9c35fdf2b02070f2464362e558c2");
        //新浪微博 appkey appsecret
        PlatformConfig.setSinaWeibo("3773785578", "9ea0fea7d9cd43eb1fbfcf9d22447bc6");
        // QQ和Qzone appid appkey
        PlatformConfig.setQQZone("1105835250", "Td78bpHQr7ZfCQv1");

 
  

   但是别忘了,在Manifest.xml里也还有一处需要更改(代码中标红的,也需要改成你自己申请的appId)

     
            
                

                
                

                
            
        
        

 
  
 3、QQ分享失败(如图)

          友盟分享应该注意的问题,别掉入坑了_第1张图片

         错误原因:分享链接错误

         可能有的开发者的应用还没有上线,所以分享的链接是本地搭建的服务器地址,比如:"http://192.168.1.132:8001/app“ 就是因为这个分享链接的问题,导致分享到qq空间出现异常。如果把这个链接换成: ”http://www.baidu.com“,分享就成功了。

        总结:分享链接最好用带域名的链接,不要使用带ip地址的链接

  4、关于微信回调WXEntryActivity

       这里一定要特别注意路劲的问题,你需要在主目录下新建一个wxapi,然后将该回调activity放入其中,完整的路径:

        “com.cttouzi.gezilicai.wxapi.WXEntryActivity.java”

        关于代码如下:

 public class WXEntryActivity extends WXCallbackActivity {
        @Override
        public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
            super.onCreate(savedInstanceState, persistentState);
        }
        @Override
        public void onReq(BaseReq req) {
            super.onReq(req);
        }
        //微信回调
        @Override
        public void onResp(BaseResp resp) {   //分享之后的回调
            switch (resp.errCode) {
                case BaseResp.ErrCode.ERR_OK: //正确返回
                    //Toast.makeText(this, "微信分享成功回调了111", Toast.LENGTH_SHORT).show();
                    break;
            }
            super.onResp(resp);
        }
    }

    5、.so文件放置的路径不正确,这个问题一般容易出现在第一次集成Umeng

        习惯使用eclipse的人通常会把jar包和.so文件直接拷贝到libs目录下,但是Android studio 比较不同,通常情况下我们会把jar包放在libs 目录下,但是一般会在主目录下新建 jniLibs,然后把需要.so文件放在这里,效果如图:

                 友盟分享应该注意的问题,别掉入坑了_第2张图片


         但是需要注意的是,需要在build 文件下配置下:

       android {
              sourceSets.main{
                       jniLibs.srcDirs = ['src/main/jniLibs'];
                            }
                }

         好了,以上是我再集成的时候遇到的几个问题,欢迎大家一起探讨!!!


你可能感兴趣的:(友盟分享应该注意的问题,别掉入坑了)