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

[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无效或被禁用。


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


官网下载SDK

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

将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中
[android]ShareSDK——内容分享和短信验证

相应的2.6.0的替换为
[android]ShareSDK——内容分享和短信验证
短信验证的不用变。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115319.html原文链接:https://javaforall.net

(0)
上一篇 2022年2月6日 上午6:00
下一篇 2022年2月6日 上午7:00


相关推荐

  • 移动亲情网有漫游费吗_北京移动和家庭套餐介绍

    移动亲情网有漫游费吗_北京移动和家庭套餐介绍为进一步满足客户国内长途及国内漫游通话需求,中国移动北京公司将于近期推出长漫亲情省业务,现就相关事宜通知如下:  一、推出时间  2009年4月18日0时  二、目标客户  动感地带、神州行家园卡  三、具体内容  月功能费1元,客户可指定除北京外国内任一省、自治区或直辖市为亲情省(不含港澳台),客户在北京向亲情省拨打长途每分钟0.19元;客户漫游至亲情省拨打国内电话(不含港澳台)、接听电话每分钟

    2022年10月7日
    6
  • OHEM 代码详解「建议收藏」

    OHEM 代码详解「建议收藏」目录1.网络结构2.OHEM前向传播3.reference1.网络结构############################ReadonlyRoINetwork###########Start##########layer{name:”roi_pool5_readonly”type:”ROIPooling”bottom:”co…

    2022年5月30日
    36
  • 零基础学Java(13)方法参数[通俗易懂]

    零基础学Java(13)方法参数[通俗易懂]前言首先回顾一下在程序设计语言中关于如何将参数传递给方法的一些专业术语。按值调用表示方法接收的是调用者提供的值。而按引调用表示方法接收的是调用者提供的变量地址。方法可以修改按引用传递的变量的值,而不

    2022年8月7日
    14
  • C语言学习——预处理命名「建议收藏」

    C语言学习——预处理命名「建议收藏」一、宏定义编译:对源程序进行词法、语法分析,生成代码,优化等。作用:在编译之前,对源程序中的特殊命令做一些处理,生成扩展C源程序种类:宏定义 #define文件包含 #include条件编译 #if #else #endif等格式:“#”开头占单独书写行语句尾不加分号2)C语言允许宏带有参数。在宏定义中的参数称为“形式参数”,在宏调用中的…

    2022年8月18日
    10
  • iPhone 抓包工具Charles使用[通俗易懂]

    iPhone 抓包工具Charles使用[通俗易懂]Charles是在Mac下常用的截取网络封包的工具,在做iOS开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。Charles通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。Charles主要的功能包括:支持SSL代理。可以截取分析SSL的请求。支持流量控制。可以模拟慢速网络

    2022年5月16日
    548
  • Codeforces 456 A. Laptops「建议收藏」

    Codeforces 456 A. Laptops「建议收藏」题目链接:http://codeforces.com/contest/456/problem/A提示:一共有n个数,而且a[i],b[i]都<=n;所以我们只需要找当a!=b的时候就行了,代码如下:#include<cstdio>#include<iostream>#include&l…

    2022年10月10日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号