• [android]ShareSDK——内容分享和短信验证


    前言

    新版本号ShareSDK的分享和短信验证,按官网的文档,都须要加入一个<Activity></Activity>标签,而分享和短息验证的这个标签内容都一样。会冲突。

    解决的方法:分享用旧版本号,短信验证用新版本号。

    后面会有解决的方法。


    分享

    导入project见初识ShareSDK——嵌入和登陆

    		<span style="font-size:24px;">OnekeyShare oks = new OnekeyShare();
    		//全部SSO都是针对新浪微博d
    		oks.disableSSOWhenAuthorize();
    		oks.setSilent(true);</span>
    假设没有指定分享平台,则默认全部平台都会跳出。

    oks.setPlatform(platformName);

    一些须要注意的。凝视已经非常具体了。

    		//分享时Notification的图标和文字2.5.9以后的版本号不调用此方法
    		//oks.setNotification(R.drawable.ic_launcher, getString(R.string.app_name));
    		 // title标题,印象笔记、邮箱、信息、微信、人人网和QQ空间使用
    		 oks.setTitle(getString(R.string.share));
    		// titleUrl是标题的网络链接,仅在人人网和QQ空间使用
    		 oks.setTitleUrl("http://sharesdk.cn");
    		 // text是分享文本,全部平台都须要这个字段
    		//有字数限制
    		 oks.setText("我是分享文本");
    		// imagePath是图片的本地路径,Linked-In以外的平台都支持此參数(假设本地没有,则后面的语句不会运行)
    		//oks.setImagePath("/sdcard/test.jpg");//确保SDcard以下存在此张图片
    <span style="white-space:pre">		</span>//oks.setImageUrl("=");//网络路径  QQ空间有时候分享不成功(权限问题)
    		// url仅在微信(包含好友和朋友圈)中使用
    		 oks.setUrl("http://sharesdk.cn");
    		 	// comment是我对这条分享的评论。仅在人人网和QQ空间使用
    		 oks.setComment("我是測试评论文本");
    		 	// site是分享此内容的站点名称,仅在QQ空间使用
    		 oks.setSite(getString(R.string.app_name));
    		 	// siteUrl是分享此内容的站点地址,仅在QQ空间使用
    		 oks.setSiteUrl("http://sharesdk.cn");
    		 	//设置经纬度(可依据定位获取)
    		 	//oks.setLatitude(latitude);
    		 	//oks.setLongitude(longitude);
    		 
     			//启动分享GUI(图形用户界面)
    		 oks.show(this);</span>

    短信验证

    短信验证和登陆分享申请KEY 和 SECRET的地方不一样。。我犯了这个错误,结果验证的时候提示Appkey无效或被禁用。




    官网下载SDK



    将SMS目录下的SMSSDK文件复制到project里,作为library导入。

    加入权限:

        <uses-permission android:name="android.permission.READ_CONTACTS" />
        <uses-permission android:name="android.permission.READ_PHONE_STATE" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.RECEIVE_SMS" />
        <uses-permission android:name="android.permission.GET_TASKS" />
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    加入代码调用:

    		SMSSDK.initSDK(this, APP_KEY, APP_SECRET);
    		RegisterPage page = new RegisterPage();
    		page.setRegisterCallback(new EventHandler(){
    			@Override
    			public void afterEvent(int event, int result, Object data) {
    				if(result == SMSSDK.RESULT_COMPLETE){
    					HashMap<String,Object> phoneMap = (HashMap<String, Object>) data;
    					String country = (String) phoneMap.get("country");
    					String phone = (String) phoneMap.get("phone"); 
    					// 提交用户信息,这种方法是获取了手机后。你想採取的操作。
    					//registerUser(country, phone);
    					System.out.println(country+phone);
    				}
    			}
    			
    		});
    		page.show(this);

    自己定义短信验证界面

    都是官网的文档

    将private EventHandler eh;声明为全局。为了在Activity的onDestroy()里,对EventHandler注销验证SMSSDK.unregisterEventHandler(eh);

    		 eh=new EventHandler(){
    			 
    	            @Override
    	            public void afterEvent(int event, int result, Object data) {
    	 
    	               if (result == SMSSDK.RESULT_COMPLETE) {
    	                //回调完毕
    	                if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {
    	                //提交验证码成功
    	                	System.out.println("成功。");
    	                }else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE){
    	                //获取验证码成功
    	                	System.out.println("获取验证码成功");
    	                }else if (event ==SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES){
    	                //返回支持发送验证码的国家列表
    	                } 
    	              }else{                                                                 
    	                 ((Throwable)data).printStackTrace(); 
    	          }
    	      } 
    	   }; 
    	SMSSDK.registerEventHandler(eh); //注冊短信回调

    为button加入监听事件:

    		//获取短信验证
    		btn_num.setOnClickListener(new OnClickListener() {
    			@Override
    			public void onClick(View arg0) {
    				if (!TextUtils.isEmpty(et_num.getText().toString())) {
    					SMSSDK.getVerificationCode("86", et_num.getText()
    							.toString());
    				}
    			}
    		});
    		//把短信里的验证码提交到server
    		btn_code.setOnClickListener(new OnClickListener() {
    
    			@Override
    			public void onClick(View arg0) {
    				SMSSDK.submitVerificationCode("86",et_num.getText().toString(), et_code.getText().toString());
    			}
    		});

    文档地址:无gui接口调用


    ShareSDK新版本号短信验证和分享冲突解决

    由于新版本号shareSDK中分享与验证中。mainfest中name中都是"com.mob.tools.MobUIShell"放在一个project里会冲突。

    分享:
    将mainfest文件节点

            <activity
                android:name="com.mob.tools.MobUIShell"
                android:configChanges="keyboardHidden|orientation|screenSize"
                android:screenOrientation="portrait"
                android:theme="@android:style/Theme.Translucent.NoTitleBar"
                android:windowSoftInputMode="stateHidden|adjustResize" >


    改为:

            <activity
                android:name="cn.sharesdk.framework.ShareSDKUIShell"
                android:configChanges="keyboardHidden|orientation|screenSize"
                android:screenOrientation="portrait"
                android:theme="@android:style/Theme.Translucent.NoTitleBar"
                android:windowSoftInputMode="stateHidden|adjustResize" >


    将share的libs中

    相应的2.6.0的替换为
    短信验证的不用变。

  • 相关阅读:
    ASP.NET常用的三十三种代码
    asp.net获取IP地址
    Inside Microsoft Sql Server 2005 TSQL Programming 学习笔记
    动态SQL与SQL注入(一)动态SQL
    (二)SQL 注入
    WCF 安全
    C# 运算符重载和 implicit关键字
    分页那回事
    thinking
    Moss css
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5396978.html
Copyright © 2020-2023  润新知