在android中调用分享其实本质也是一个Intent,发送该Intent,就可以进行分享操作。如下:
效果如下图:
但这样明显是不足的,比如如果用户想通过微信发送分享,但没有装微信,则就无法进行分享,因为根本就不会出现分享的选项!!所以需要通过oauth能够进行分享的框架
目前比较好的有 友盟SDK和ShareSDK两种。
在Share For Android下,有QuickIntegrater.jar文件,这就是快速集成ShareSDK的工具
在有jdk的环境下,直接点击运行,出现如下界面:
点击确定,在sample目录下就会生成使用例子。
1,把生成的项目给集成进来
集成的项目的包名和项目名需要和上面填写的一致
集成结果如图:
2,添加权限:
3.添加ShareSDK的Activity
如果,集成的有微信或易信业务,需要添加如下信息
分享功能的使用:
使用之前需要在ShareSDK注册,并添加应用,获取app key,这个步骤在sina,腾讯等开放平台都是一样的,在此不做赘述。
如下:
之后需要把该信息添加到项目中,这里有三种方式:
第一种:在ShareSDK的应用管理后台中配置,使用此方法需要调用ShareSDK.init(context,你的应用在sharesdk注册时返回的AppKey)方法进行初始化,如果以后更改了注册信息可以直接从网上更改,而不用重新发布新版本进行更新。(优先级最高)。
第二种:通过代码配置“setPlatformDevInfo(String, HashMap<String, Object>)”方法,使用此方法需要调用ShareSDK.init(context,你的应用在sharesdk注册时返回的AppKey)方法进行初始化。(优先级中)。
第三种:通过“assets/ShareSDK.xml”文件来配置,次方式会以明文存在,但这种方式最为简单。(优先级最低)。
第一种方式可以实现“动态配置应用信息”的功能,但是一旦脱离网络,ShareSDK可能无法运作;第三种方式是优先级最低的方式,但是它最为方便、集中;最后使用代码设置的方式是最灵活的方式,第二种方式开发者可以在代码里面写死应用信息,也可以通过私有协议,从自己的服务器上动态获取应用注册信息,其优先级居第一种和第二种之间。
故采用第三种方式进行:
在集成项目时,assert目录下有如下文件:
把该文件集成进项目,并修改,其中字段的意义和解释在该文件的注释上。
要修改的值有两项:
①
②
进行配置后,最终效果如图:
点击新浪微博,如下:
点击分享,出现微博登陆界面。
登陆,并授权后就可以分享了!!!
分享成功或失败,会给出Noifaction提示。
intent=new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_SUBJECT, "分享");
intent.putExtra(Intent.EXTRA_TEXT, text);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(Intent.createChooser(intent, getTitle()));
效果如下图:
但这样明显是不足的,比如如果用户想通过微信发送分享,但没有装微信,则就无法进行分享,因为根本就不会出现分享的选项!!所以需要通过oauth能够进行分享的框架
目前比较好的有 友盟SDK和ShareSDK两种。
两种使用方式基本相同,下面接着ShareSDK讲解下使用:
在Share For Android下,有QuickIntegrater.jar文件,这就是快速集成ShareSDK的工具
在有jdk的环境下,直接点击运行,出现如下界面:
点击确定,在sample目录下就会生成使用例子。
1,把生成的项目给集成进来
集成的项目的包名和项目名需要和上面填写的一致
集成结果如图:
2,添加权限:
<uses-permission android:name="android.permission.GET_TASKS"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
3.添加ShareSDK的Activity
<activity
android:name="cn.sharesdk.framework.ShareSDKUIShell"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="keyboardHidden|orientation|screenSize"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" >
<intent-filter>
<data android:scheme="tencent100371282" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
如果,集成的有微信或易信业务,需要添加如下信息
<!--微信分享回调 -->
<activity
android:name=".wxapi.WXEntryActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:screenOrientation="portrait" />
<!--易信分享回调 -->
<activity
android:name=".yxapi.YXEntryActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:screenOrientation="portrait" />
分享功能的使用:
使用之前需要在ShareSDK注册,并添加应用,获取app key,这个步骤在sina,腾讯等开放平台都是一样的,在此不做赘述。
如下:
之后需要把该信息添加到项目中,这里有三种方式:
第一种:在ShareSDK的应用管理后台中配置,使用此方法需要调用ShareSDK.init(context,你的应用在sharesdk注册时返回的AppKey)方法进行初始化,如果以后更改了注册信息可以直接从网上更改,而不用重新发布新版本进行更新。(优先级最高)。
第二种:通过代码配置“setPlatformDevInfo(String, HashMap<String, Object>)”方法,使用此方法需要调用ShareSDK.init(context,你的应用在sharesdk注册时返回的AppKey)方法进行初始化。(优先级中)。
第三种:通过“assets/ShareSDK.xml”文件来配置,次方式会以明文存在,但这种方式最为简单。(优先级最低)。
第一种方式可以实现“动态配置应用信息”的功能,但是一旦脱离网络,ShareSDK可能无法运作;第三种方式是优先级最低的方式,但是它最为方便、集中;最后使用代码设置的方式是最灵活的方式,第二种方式开发者可以在代码里面写死应用信息,也可以通过私有协议,从自己的服务器上动态获取应用注册信息,其优先级居第一种和第二种之间。
故采用第三种方式进行:
在集成项目时,assert目录下有如下文件:
把该文件集成进项目,并修改,其中字段的意义和解释在该文件的注释上。
要修改的值有两项:
①
<ShareSDK
AppKey = "androidv1101"/> <!-- 修改成你在sharesdk后台注册的应用的appkey"-->
此处的appKey为上面注册获取的值。
②
<!-- ShareByAppClient标识是否使用微博客户端分享,默认是false -->
<SinaWeibo
Id="1"
SortId="1"
AppKey="568898243"
AppSecret="38a4f8204cc784f81f9f0daaf31e02e3"
RedirectUrl="http://www.sharesdk.cn"
ShareByAppClient="true"
Enable="true" />
要使用的分享功能中的信息,以新浪微博为例,其中的值,也需要在sina开放平台注册,创建应用,并获取。如下:
进行配置后,最终效果如图:
点击新浪微博,如下:
点击分享,出现微博登陆界面。
登陆,并授权后就可以分享了!!!
分享成功或失败,会给出Noifaction提示。
微博如下: