QQ分享官方第三方接入(分享纯图片及截取view的bitmap图)
来源:互联网 发布:网狐6603数据库文档 编辑:程序博客网 时间:2024/04/30 04:19
常见功能Mark:QQ分享官方第三方接入。
一、创建并配置工程
参考腾讯官方文档:点击打开链接简单抄过来一些:
1、创建一个工程,并把open-sdk.jar文件和mta_sdk_x.x.x.jar文件拷贝到libs(或lib)目录下
2. 配置AndroidManifest
在应用的AndroidManifest.xml增加配置的<application>节点下增加以下配置(注:不配置将会导致无法调用API);(下面是我自己的manifest代码,直接粘贴,标红的地方为AppKey)
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.qqsharedm" android:versionCode="1" android:versionName="1.0" > <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="21" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name="com.tencent.tauth.AuthActivity" android:launchMode="singleTask" android:noHistory="true" > <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="tencent222222" /> </intent-filter> </activity> <activity android:name="com.tencent.connect.common.AssistActivity" android:configChanges="orientation|keyboardHidden|screenSize" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application></manifest>
二、正文配置QQ分享Demo:
一)实例化:private Tencent mTencent;protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initViews();// Tencent类是SDK的主要实现类,开发者可通过Tencent类访问腾讯开放的OpenAPI。// 其中APP_ID是分配给第三方应用的appid,类型为String。mTencent = Tencent.createInstance("222222",this.getApplicationContext());// 1.4版本:此处需新增参数,传入应用程序的全局context,可通过activity的getApplicationContext方法获取bt_1.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Bitmap b;if (tv_1.getDrawingCache() != null) {b = tv_1.getDrawingCache();} else {b = loadBitmapFromView(tv_1);}saveBitmap(b);onClickShareToQQ();Toast.makeText(getApplicationContext(), "保存成功",Toast.LENGTH_SHORT).show();}});}二、分享消息代码:(我做的是分享纯图片):这个比较恶心的一点是图片必须取路径,要么网络路径要么本地路径。让人比较无奈。(具体路径及保存图片代码见最后注释)
private void onClickShareToQQ() {Bundle shareParams = new Bundle();shareParams.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE,QQShare.<strong>SHARE_TO_QQ_TYPE_IMAGE);shareParams.putString(QQShare.SHARE_TO_QQ_IMAGE_LOCAL_URL,File.getPath() + picName);shareParams.putString(QQShare.SHARE_TO_QQ_APP_NAME, "LPS CRM");shareParams.putInt(QQShare.SHARE_TO_QQ_EXT_INT,QQShare.SHARE_TO_QQ_FLAG_QZONE_ITEM_HIDE);doShareToQQ(shareParams);}三、分享后实现回调
private void doShareToQQ(Bundle params) {mTencent.shareToQQ(MainActivity.this, params, new BaseUiListener() {protected void doComplete(JSONObject values) {Toast.makeText(getApplicationContext(), "成功",Toast.LENGTH_SHORT);}@Overridepublic void onError(UiError e) {}@Overridepublic void onCancel() {}});}两端代码均为回调,其实自定义与否看需求。
private class BaseUiListener implements IUiListener {@Overridepublic void onCancel() {// TODO Auto-generated method stub}@Overridepublic void onComplete(Object arg0) {// TODO Auto-generated method stub}@Overridepublic void onError(UiError arg0) {// TODO Auto-generated method stub}}
注释:
核心代码:抓取view图片缓存保存bitmap判空代码:
public static Bitmap loadBitmapFromView(View v) {if (v == null) {return null;}v.setDrawingCacheEnabled(true);Bitmap screenshot;v.measure(MeasureSpec.makeMeasureSpec(v.getWidth(),MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(v.getHeight(), MeasureSpec.UNSPECIFIED));v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight());v.buildDrawingCache();screenshot = v.getDrawingCache();if (screenshot == null) {v.setDrawingCacheEnabled(true);screenshot = Bitmap.createBitmap(v.getWidth(), v.getHeight(),Bitmap.Config.ARGB_8888);Canvas c = new Canvas(screenshot);c.translate(-v.getScrollX(), -v.getScrollY());v.draw(c);return screenshot;}return screenshot;}
1)保存图片到本地
/** * 保存图片到本地 * */public void saveBitmap(Bitmap bm) {isHaveSDCard();if (isHaveSDCard()) {File = Environment.getExternalStorageDirectory();} else {File = Environment.getDataDirectory();}File = new File(File.getPath() + "/MotieReader/data/");if (!File.isDirectory()) {File.delete();File.mkdirs();}if (!File.exists()) {File.mkdirs();}writeBitmap(File.getPath(), picName, bm);}2)保存图片到本地
/** * 保存图片 * * @param path * @param name * @param bitmap */public static void writeBitmap(String path, String name, Bitmap bitmap) {File file = new File(path);if (!file.exists()) {file.mkdirs();}File _file = new File(path + name);if (_file.exists()) {_file.delete();}FileOutputStream fos = null;try {fos = new FileOutputStream(_file);if (name != null && !"".equals(name)) {int index = name.lastIndexOf(".");if (index != -1 && (index + 1) < name.length()) {String extension = name.substring(index + 1).toLowerCase();if ("png".equals(extension)) {bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);} else if ("jpg".equals(extension)|| "jpeg".equals(extension)) {bitmap.compress(Bitmap.CompressFormat.JPEG, 75, fos);}}}} catch (FileNotFoundException e) {e.printStackTrace();} finally {if (fos != null) {try {fos.close();} catch (IOException e) {e.printStackTrace();}}}}三、是否有sd卡
public boolean isHaveSDCard() {String SDState = android.os.Environment.getExternalStorageState();if (SDState.equals(android.os.Environment.MEDIA_MOUNTED)) {return true;}return false;}
0 0
- QQ分享官方第三方接入(分享纯图片及截取view的bitmap图)
- 微信分享官方第三方接入(图片及文字)
- Android-将View转换成图片分享到QQ,微信(不使用第三方API)
- 第三方 QQ分享的使用
- 简单的第三方分享QQ
- 第三方分享QQ QQZONE
- 第三方登录QQ、分享
- QQ第三方分享详解
- QQ第三方登录+分享
- iOS开发第三方分享 QQ分享
- Android使用官方API分享内容到QQ和微信(非第三方集成)
- 友盟第三方分享 QQ QQ空间 微信 新浪 及走过的坑
- QQ第三方登录与QQ分享
- android 第三方分享图片
- cordova 实现第三方登录及分享,qq,微信,微博,插件的使用和改动
- cordova 实现第三方登录及分享,qq,微信,微博,插件的使用和改动
- 微信第三方接入遇到的科恩(坑)——登录、分享
- 友盟第三方分享QQ分享不走回调方法或者显示取消分享的问题
- TensorFlow 研究实践二
- 数据库安全--授权GRANT和回收REVOKE
- 文本限制输入
- c++第五次上机
- Lock与synchronized的区别
- QQ分享官方第三方接入(分享纯图片及截取view的bitmap图)
- WebView相关知识
- Android中的SurfaceView学习
- 设计模式之代理模式
- NYOJ 874 签到
- 解决新手机连接到centos系统电脑adb devices不显示设备问题
- C++Primer Plus第6版 4.13编程练习答案
- C++第5次实验
- iOS 十六进制颜色UIColor+Hex