当前位置:首页 » 安卓系统 » android分享sdk

android分享sdk

发布时间: 2024-03-12 23:30:05

⑴ android 用sharesdk 分享给微信好友的时候分享成功以后弹出的对话框返回第三方工具还是停留在微信的问题

说明你还是没有仔细的去看分享文档,肯定有说明的,可能是你的方法和参数不对

⑵ android集成分享sdk后怎么代码混淆

为了保护代码被反编译,android引入了混淆代码的概念
1.设置混淆
在工程下找到project.properties文件
在文件中加入proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt这个是系统的
也可以用自己的混淆文件(这样就可以配置一些自己的东西),去sdk.dir}/tools/proguard/ 下复制proguard-android.txt文件到本地工程中
然后设置成proguard.config=proguard-android.txt
project.properties文件:
[java] view plain

#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
proguard.config=proguard-android.txt

# Project target.
target=android-17

-injars androidtest.jar【jar包所在地址】
-outjars out【输出地址】
-libraryjars 'D:\android-sdk-windows\platforms\android-9\android.jar' 【引用的库的jar,用于解析injars所指定的jar类】
-optimizationpasses 5
-dontusemixedcaseclassnames 【混淆时不会产生形形色色的类名 】
- 【指定不去忽略非公共的库类。 】
-dontpreverify 【不预校验】
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* 【优化】
-keep public class * extends android.app.Activity【不进行混淆保持原样】
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService
-keep public abstract interface com.asqw.android.Listener{
public protected <methods>; 【所有方法不进行混淆】
}
-keep public class com.asqw.android{
public void Start(java.lang.String); 【对该方法不进行混淆】
}
-keepclasseswithmembernames class * { 【保护指定的类和类的成员的名称,如果所有指定的类成员出席(在压缩步骤之后)】
native <methods>;
}
-keepclasseswithmembers class * { 【保护指定的类和类的成员,但条件是所有指定的类和类成员是要存在。】
public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keepclassmembers class * extends android.app.Activity {【保护指定类的成员,如果此类受到保护他们会保护的更好 】
public void *(android.view.View);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {【保护指定的类文件和类的成员】
public static final android.os.Parcelable$Creator *;
}

=====================================常见异常===================================
参考:http://blog.csdn.net/vrix/article/details/7100841

加入第三方jar包之后常出现的几个异常:
proguard returned with error code 1.See console
情况1:
Proguard returned with error code 1. See console
Error: C:/Documents (系统找不到指定文件)
后来发现是因为将整个工程放到了桌面上,而桌面的目录是C:/Documents and Settings/Administrator/桌面,在这里面有空格,而proguard进行发编译的时候是不允许有空格的
如果换了正确路径还不好用的话,直接删除proguard就好了
注意:SDK和程序路径最好不要有空格符
情况2:
Proguard returned with error code 1. See console
异常:
java.lang.
解决办法:将proguard.cfg中的"-dontpreverify"改成“-dontoptimize”
参考文章:http://groups.google.com/group/android-developers/browse_thread/thread/eca3b0f5ce6ad00f

我把项目中生成的proguard文件夹(此时文件夹是空的)删掉,然后再重新运行项目,就OK 了。
情况3:
[2011-10-21 13:22:32 - ZMKSMarket_Build_v1.0] Proguard returned with error code 1. See console

[2011-10-21 13:22:32 - ZMKSMarket_Build_v1.0] java.io.IOException: Can't read [proguard.ClassPathEntry@106082] (No such file or directory)
[2011-10-21 13:22:32 - ZMKSMarket_Build_v1.0]
at proguard.InputReader.readInput(InputReader.java:230)
[2011-10-21 13:22:32 - ZMKSMarket_Build_v1.0]
at proguard.InputReader.readInput(InputReader.java:200)
[2011-10-21 13:22:32 - ZMKSMarket_Build_v1.0]
at proguard.InputReader.readInput(InputReader.java:178)
[2011-10-21 13:22:32 - ZMKSMarket_Build_v1.0]
at proguard.InputReader.execute(InputReader.java:100)
[2011-10-21 13:22:32 - ZMKSMarket_Build_v1.0]
at proguard.ProGuard.readInput(ProGuard.java:195)
[2011-10-21 13:22:32 - ZMKSMarket_Build_v1.0]
at proguard.ProGuard.execute(ProGuard.java:78)
[2011-10-21 13:22:32 - ZMKSMarket_Build_v1.0]
at proguard.ProGuard.main(ProGuard.java:499)
抛出这样的异常的原因是第三方jar的引用路径不对,没有找到这个需要忽略混淆的jar包。

========================官方文档翻译========================================

原文
http://developer.android.com/guide/developing/tools/proguard.html

混淆器(ProGuard)
在本文中(In this document)
Enabling ProGuard
Configuring ProGuard
Decoding Obfuscated Stack Traces
Debugging considerations for published applications
参见
ProGuard Manual ?
ProGuard ReTrace Manual ?
混淆器通过删除从未用过的代码和使用晦涩名字重命名类、字段和方法,对代码进行压缩,优化和混淆。结果是一个比较小的.apk文件,该文件比较难进行逆向工程。因此,当你的应用程序对安全敏感(要求高),例如当你授权应用程序的时候,混淆器是一种重要的保护手段。
混淆器被集成在android 构建系统中,所以你不必手动调用它。同时混淆器仅在发布模式下进行构建应用程序的时候才会运行起来,所以在调试模式下构建程序时,你不必处理混淆代码。让混淆器运行起来是可选择的,但是推荐选上。
这个文档描述了怎样启用并配置混淆器,以及使用跟踪(retrace)工具对混淆的堆栈跟踪信息(stack traces)进行解码。

启用混淆器Enabling ProGuard
当你新建了一个Android工程之后,一个proguard.cfg文件会在工程的根目录下自动创建。这个文件定义了混淆器是怎样优化和混淆你的代码的,所以懂得怎样根据你的需要来定制是非常重要的。缺省的配置文件仅覆盖到了通常情况,所以根据你的需求,很可能需要编辑它。接下来的内容是关于通过定制混淆器配置文件来对混淆器配置。
为了让启用混淆器作为Ant或者Eclipse构建过程中一部分,可以在<project_root>/default.properties文件中,设置proguard.config属性。路径可以是绝对路径或者工程根目录的相对路径。
如果你让proguard.cfg文件在缺省位置(工程的根目录),你可以像这样指定位置:
proguard.config=proguard.cfg

同样,你可以把该文件放到任意的位置,并指定它的绝对路径。
proguard.config=/path/to/proguard.cfg

当你在发布模式下,或者通过运行ant release,或者通过使用Eclipse中的Export Wizard构建你的应用程序的时候,构建系统都会自动地去检查proguard.config属性是否被设置了。如果被设置了,混淆器在把所有东西打包成.apk文件之前,自动地对应用程序字节码进行混淆处理。而在调试模式中构建则不会调用混淆器,因为那样调试会更加繁重。

运行混淆器之后输出的文件有:
mp.txt
描述.apk包中所有class文件的内部结构。
mapping.txt

列出了源代码与混淆后的类,方法和属性名字之间的映射。这个文件对于在构建之后得到的bug报告是有用的,因为它把混淆的堆栈跟踪信息反翻译为源代码中的类,方法和成员名字。更多信息,查看解码混淆过的堆栈跟踪信息。

seeds.txt
列出那些未混淆的类和成员。
usage.txt
列出从.apk中剥离的代码。
这些文件放在以下目录中:

注意:每次在发布模式下构建时,这些文件都会被最新的文件覆盖。所以每次发布程序时候,为了反混淆来自构建时产生的bug报告,请保存这些文件的一个拷贝。对于为什么要保存这些文件的重要性的更多信息,请查看程序发布调试注意事项。

混淆器配置(proguard config)
某些情况下,proguard.cfg文件的缺省配置可以满足需求了。但是,对于混淆器来说,大多数情况做出正确的分析是困难的,并且它或许会删除在它看来是无用的,但对于程序来说却确实需要的代码。一些例子如下:

一个仅引用于AndroidManifest.xml文件的类。
一个通过JNI调用的方法。
动态引用的属性和方法。
<project_root>/bin/proguard 当你使用Ant时
<project_root>/proguard 当你使用Eclipse时

解码混淆过的堆栈跟踪信息(Decoding Obfuscated Stack Traces)
当混淆代码并输出了一个堆栈调试信息时,这些方法名字是混淆过的,虽然可以进行调试,但是调试变得困难。幸运的是,每当混淆器运行时候,它都会输出到文件<project_root>/bin/proguard/mapping.txt中,该文件包含了从原始类,方法和属性名字到混淆后名字的映射。
Windows系统中retrace.bat脚本命令或者Linux和Mac OS X系统中retrace.sh脚本命令能把混淆后的堆栈调试信息转换为可以理解的文件。它被放在<sdk_root>/tools/proguard/目录下。运行retrace工具的命令语法是:
retrace.bat|retrace.sh [-verbose] mapping.txt [<stacktrace_file>]

例如:
retrace.bat -verbose mapping.txt obfuscated_trace.txt

如果你没有为<stracktrace_file>指定值,那么retrace工具从标准输入读取。

已发布应用程序的调试注意事项(Debugging considerations for published applications)
保存好每一个已发布给用户的程序的mapping.txt文件。通过保存发布构建版本的mapping.txt文件拷贝,确保当用户碰到bug,并把混淆后的堆栈调试跟踪信息提交给你时,你可以进行调试从而修复问题。程序的mapping.txt文件在每次发布构建时都会被覆盖,所以你一定要注意保存正确的版本。
例如,假设你已经发布了一个应用程序并在继续在新的版本中开发添加新的功能。接着你马上启动混淆器并创建一个新的发布版本。该操作把mapping.txt文件覆盖了。一个用户提交了来自当前发布版本的bug报告,该报告包含了堆栈调试信息。你再也不能对用户的堆栈信息进行调试了,因为这个对应用户本机上版本的mapping.txt文件不存在了。其他覆盖mapping.txt文件的情况还有很多,所以对于每一个可能需要调试的版本,你都要确保有一份拷贝。

⑶ 最新的新浪微博客户端ANDROID版 SDK到底怎么用

本文介绍了如何在Android程序中使用新浪微博提供的AndroidSDK

微博Android平台SDK为第三方微博应用提供了文档易用的微博API调用服务,使第三方客户端无需了解复杂的验证,API调用过程。并可以实现分享到微博的功能,可以分享文字,或者多媒体信息到内置的分享页面,并发送到微博。

首先我们需要在新浪微博开放平台上进行注册,之后需要创建一个新的应用,并且需要记下应用的APP key,App Secret Key以及设置应用的回调页以便我们在程序中进行使用。此外,还需要在应用的高级信息里添加测试用户的uid,切记切记,否则会出现登陆不成功等怪现象。

接着我们下载微博提供的Android上的SDK,下载地址在这里http。//open。weibo。com/wiki/SDK,选择AndroidSDK进行下载即可。
使用方法:

首先将下载的sdk进行解压,并将其导入到eclipse中,接着在你需要使用sdk的android工程中点击右键,属性,设置library属性,选中刚才导入的weibosdk即可。如图所示

然后在你的工程的Manifest文件中,加入以下权限:

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.WRITE_APN_SETTINGS"></uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>

这样我们就能使用weibosdk了

建立工程以后如何在代码中使用weiboAPI呢,下面就由我来为大家介绍使用方法:
首先在你需要使用微博的Activity中加入以下代码:

Weibo weibo = Weibo.getInstance();
weibo.setupConsumerConfig(Constants.CONSUMER_KEY,Constants.CONSUMER_SECRET);
weibo.setRedirectUrl("Your URLhere");
weibo.authorize(this,
listener);
注意代码中的Constants.CONSUMER_KEY,Constants.CONSUMER_SECRET即是文章开头介绍的在微博上创建的应用里的两个key,setRedirectUrl中的内容即是在应用中设置的回调页。

Listener则是在进行登陆授权后对执行结果进行处理的Litener,代码如下

public class AuthDialogListener implements WeiboDialogListener {
private Activity context;
private String content;
private String file;
private float lat;
private float lon;
private static boolean isOver=true;
public AuthDialogListener(Activity context,String content,String file,float lat,float lon){
this.context= context;
this.content=content;
this.file=file;
this.lat=lat;
this.lon=lon;
}
@Override
public void onComplete(Bundle values) {
String token = values.getString("access_token");
String expires_in = values.getString("expires_in");
String oauth_verifier = values.getString("oauth_verifier");
AccessToken accessToken = new AccessToken(token, Constants.CONSUMER_SECRET);
accessToken.setExpiresIn(expires_in);
accessToken.setVerifier(oauth_verifier);
Weibo.getInstance().setAccessToken(accessToken);
try {
if (isOver) {
isOver=false;
share2weibo(this.content,null,listener,lat,lon);
}

} catch (WeiboException e) {
e.printStackTrace();
}
}

@Override
public void onError(DialogError e) {
Toast.makeText(context.getApplicationContext(),
"Auth error : " + e.getMessage(), Toast.LENGTH_LONG).show();
}

@Override
public void onCancel() {
Toast.makeText(context.getApplicationContext(), "Auth cancel",
Toast.LENGTH_LONG).show();
}

@Override
public void onWeiboException(WeiboException e) {
Toast.makeText(context.getApplicationContext(),
"Auth exception : " + e.getMessage(), Toast.LENGTH_LONG)
.show();
}

private void share2weibo(String content,String file,RequestListener listener,float lat , float lon) throws WeiboException {
Weibo weibo = Weibo.getInstance();
WeiboParameters params= new WeiboParameters();
params.add("access_token", weibo.getAccessToken().getToken());
params.add("status", content);
params.add("lat", String.valueOf(lat));
params.add("long", String.valueOf(lon));
String url = Weibo.SERVER + "statuses/update.json";
if (file!=null&&!file.equalsIgnoreCase("")) {
params.add("pic", file);
url = Weibo.SERVER + "statuses/upload.json";
}
AsyncWeiboRunner runner = new AsyncWeiboRunner(weibo);
runner.request(this.context, url, params,Utility.HTTPMETHOD_POST,listener);

}
RequestListener listener= new RequestListener() {

@Override
public void onIOException(IOException e) {
isOver=true;
Toast.makeText(context, "RequestListener "+e.getMessage(), Toast.LENGTH_LONG).show();
}

@Override
public void onError(WeiboException e) {
isOver=true;
Toast.makeText(context, "RequestListener "+e.getMessage(), Toast.LENGTH_LONG).show();
}

@Override
public void onComplete(String response) {
isOver=true;
Toast.makeText(context, "Success!", Toast.LENGTH_LONG).show();
}
};
}

需要完成WeiboDialogListener接口中的方法,分别是onComplete,OnError,
OnCancel,OnWeiboException。其中Oncomplete是在微博登陆授权成功后会执行的方法,在这个方法中,你可以调用你想要的功能如发表微博,转发,评论等。使用的代码可参看以下代码:

Weibo weibo = Weibo.getInstance();
WeiboParameters params= new WeiboParameters();
params.add("access_token", weibo.getAccessToken().getToken());
params.add("status", content);
params.add("lat", String.valueOf(lat));
params.add("long", String.valueOf(lon));
String url = Weibo.SERVER + "statuses/update.json";
AsyncWeiboRunner runner = new AsyncWeiboRunner(weibo);
runner.request(this.context,url,params,Utility.HTTPMETHOD_POST,listener);

其中params是调用weibo api中需要的具体参数,可根据需要进行添加
AsyncWeiboRunner 是用来执行具体请求的类,根据你设定的参数发起请求。注意这里又有一个listerner,而这个listener是对发起请求后的结果进行处理的回调类,
RequestListener listener= new RequestListener()
需要复写的方法有OnIOException,onError,onComplete,这样可以清楚地对各种情况进行处理。
这样在程序中就可以使用新浪微博 android sdk了。

⑷ android开发 请问用qq分享文件怎么分享sdk例子上都是些 分享图片音乐什么的 不知道文件应该怎么分享

Intentshare=newIntent(Intent.ACTION_SEND);
ComponentNamecomponent=newComponentName("com.tencent.mobileqq","com.tencent.mobileqq.activity.JumpActivity");
share.setComponent(component);
Filefile=newFile(Environment.getExternalStorageDirectory()+"/001.jpg");
System.out.println("file"+file.exists());
share.putExtra(Intent.EXTRA_STREAM,Uri.fromFile(file));
share.setType("*/*");
startActivity(Intent.createChooser(share,"发送"));

⑸ 用 微信的 android SDK 怎么分享信息 到微信

用 微信的 android SDK分享信息到微信,方法如下:
1、第一步:登录微信开放平台,必须注册了开发者账号,然后在开放平台添加用于分享信息到微信的Android应用,例如:网络知道APP

2、添加的应用必须审核通过,然后会获取一个APP_ID和一个APP_SECRET,用于在Android应用中使用

3、在微信开发平台“资源下载页面”下载对应的SDK库文件,同时可以下载一个Demo案例

4、想要成功分享信息到微信,比如在Eclipse开发完Android应用后,使用自定义的签名对APP进行签名,然后将签名字符串填写到微信开放平台审核的应用中(这一步很重要),否则频繁闪退,分享信息失败!

⑹ mob中sharesdk for android v2.8.2怎么用

由于第一次使用,所以需要先进行新浪授权,授权界面下面开始介绍如何使用ShareSDK实现微博的分享功能(其他平台的类似)shareSDK传送门在使用shareSDK之前,我们需要先到新浪微博的开放平台进行注册,获得appkey以及其他的信息新浪微博开放平台传送门下面图片中划掉的部分是要重点关注的特别需要注意的是,下面的回调网址必须填写,而且在代码中有涉及,使用默认的即可至此,开发之前的准备工作已经做好了,下面还是贴代码首先看一下布局文件代码,很简单,只有一个按钮06.07.12.13.MainActivity.javapackagecom.heli17.weiboonekeylogin;002.003.importjava.io.File;004.importjava.io.FileOutputStream;005.importjava.util.HashMap;006.007.importandroid.app.Activity;008.importandroid.app.Notification;009.importandroid.app.NotificationManager;010.importandroid.app.PendingIntent;011.importandroid.content.Context;012.importandroid.content.Intent;013.importandroid.graphics.Bitmap;014.importandroid.graphics.Bitmap.CompressFormat;015.importandroid.graphics.BitmapFactory;016.importandroid.os.Bundle;017.importandroid.os.Environment;018.importandroid.os.Handler.Callback;019.importandroid.os.Message;020.importandroid.view.View;021.importandroid.widget.Toast;022.importcn.sharesdk.framework.Platform;023.importcn.sharesdk.framework.PlatformActionListener;024.importcn.sharesdk.framework.ShareSDK;025.importcn.sharesdk.framework.utils.UIHandler;026.importcn.sharesdk.onekeyshare.OnekeyShare;027.028.,029.Callback{030.031.privatestaticfinalintMSG_TOAST=1;032.privatestaticfinalintMSG_ACTION_CCALLBACK=2;033.privatestaticfinalintMSG_CANCEL_NOTIFY=3;034.035.//sdcard中的图片名称036.privatestaticfinalStringFILE_NAME="/share_pic.jpg";037.publicstaticStringTEST_IMAGE;[email protected](Messagemsg){041.switch(msg.what){042.caseMSG_TOAST:{043.Stringtext=String.valueOf(msg.obj);044.Toast.makeText(MainActivity.this,text,Toast.LENGTH_SHORT).show();045.}046.break;047.caseMSG_ACTION_CCALLBACK:{048.switch(msg.arg1){049.case1://成功后发送Notification050.showNotification(2000,"分享完成");051.break;052.case2://失败后发送Notification053.showNotification(2000,"分享失败");054.break;055.case3://取消056.showNotification(2000,"取消分享");057.break;058.}059.}060.break;061.caseMSG_CANCEL_NOTIFY:062.NotificationManagernm=(NotificationManager)msg.obj;063.if(nm!=null){064.nm.cancel(msg.arg1);065.}066.break;067.}068.returnfalse;069.}[email protected](BundlesavedInstanceState){073.super.onCreate(savedInstanceState);074.setContentView(R.layout.activity_main);075.//初始化ShareSDK076.ShareSDK.initSDK(this);077.//初始化图片路径078.newThread(){079.publicvoidrun(){080.initImagePath();081.}082.}.start();083.}084.085.//一键分享的点击事件086.publicvoidclick(Viewv){087.//实例化一个OnekeyShare对象088.OnekeyShareoks=newOnekeyShare();089.//设置Notification的显示图标和显示文字090.oks.setNotification(R.drawable.ic_launcher,"ShareSDKdemo");091.//设置短信地址或者是邮箱地址,如果没有可以不设置092.oks.setAddress("12345678901");093.//分享内容的标题094.oks.setTitle("分享内容的标题");095.//标题对应的网址,如果没有可以不设置096.oks.setTitleUrl("");097.//设置分享的文本内容098.oks.setText("分享的文本内容");099.//设置分享照片的本地路径,如果没有可以不设置100.oks.setImagePath(MainActivity.TEST_IMAGE);101.//设置分享照片的url地址,如果没有可以不设置102.oks.setImageUrl("/imgs/sharesdk/content/2013/07/25/1374723172663.jpg");103.//微信和易信的分享的网络连接,如果没有可以不设置104.oks.setUrl("");105.//人人平台特有的评论字段,如果没有可以不设置106.oks.setComment("comment");107.//程序的名称或者是站点名称108.oks.setSite("site");109.//程序的名称或者是站点名称的链接地址110.oks.setSiteUrl("");111.//设置纬度112.oks.setLatitude(23.122619f);113.//设置精度114.oks.setLongitude(113.372338f);115.//设置是否是直接分享116.oks.setSilent(false);117.//显示118.oks.show(MainActivity.this);119.}120.121.privatevoidinitImagePath(){122.try{123.if(Environment.MEDIA_MOUNTED.equals(Environment124..getExternalStorageState())125.&&Environment.getExternalStorageDirectory().exists()){126.TEST_IMAGE=Environment.getExternalStorageDirectory()127..getAbsolutePath()+FILE_NAME;128.}else{129.TEST_IMAGE=getApplication().getFilesDir().getAbsolutePath()130.+FILE_NAME;131.}132.//创建图片文件夹133.Filefile=newFile(TEST_IMAGE);134.if(!file.exists()){135.file.createNewFile();136.Bitmappic=BitmapFactory.decodeResource(getResources(),137.R.drawable.pic);138.FileOutputStreamfos=newFileOutputStream(file);139.pic.compress(CompressFormat.JPEG,100,fos);140.fos.flush();141.fos.close();142.}143.}catch(Throwablet){144.t.printStackTrace();145.TEST_IMAGE=null;146.}147.}[email protected](){151.super.onDestroy();152.//在Activity中停止ShareSDK153.ShareSDK.stopSDK(this);154.}155.

⑺ 用 微信的 android SDK 怎么分享信息 到微信

  1. 微信官方SDK的分享方法。

    //图片

    Bitmap bt=BitmapFactory.decodeResource(getApplicationContext().getResources(), R.drawable.erweima); final Uri uri = Uri.parse(MediaStore.Images.Media.insertImage(getContentResolver(), bt, null,null));

//分享到朋友

private void shareToFriend(Uri uri) {

Intent intent = new Intent();
ComponentName comp = new ComponentName("com.tencent.mm",
"com.tencent.mm.ui.tools.ShareImgUI");
intent.setComponent(comp);
intent.setAction("android.intent.action.SEND");
intent.setType("image/*");
//intent.setFlags(0x3000001);
intent.putExtra(Intent.EXTRA_STREAM,uri);
startActivity(intent);
}

  1. 调用分享文本的android 系统方法。

//分享文字
public void shareText(View view) {
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_TEXT, "This is my Share text.");
shareIntent.setType("text/plain");

//设置分享列表的标题,并且每次都显示分享列表
startActivity(Intent.createChooser(shareIntent, "分享到"));
}

//分享单张图片
public void shareSingleImage(View view) {
String imagePath = Environment.getExternalStorageDirectory() + File.separator + "test.jpg";
//由文件得到uri
Uri imageUri = Uri.fromFile(new File(imagePath));
Log.d("share", "uri:" + imageUri); //输出:file:///storage/emulated/0/test.jpg

Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, imageUri);
shareIntent.setType("image/*");
startActivity(Intent.createChooser(shareIntent, "分享到"));
}

//分享多张图片
public void shareMultipleImage(View view) {
ArrayList uriList = new ArrayList<>();

String path = Environment.getExternalStorageDirectory() + File.separator;
uriList.add(Uri.fromFile(new File(path+"australia_1.jpg")));
uriList.add(Uri.fromFile(new File(path+"australia_2.jpg")));
uriList.add(Uri.fromFile(new File(path+"australia_3.jpg")));

Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND_MULTIPLE);
shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uriList);
shareIntent.setType("image/*");
startActivity(Intent.createChooser(shareIntent, "分享到"));
}

热点内容
预编译查询 发布:2024-11-28 05:32:35 浏览:312
山东青岛iptv设置密码是多少 发布:2024-11-28 05:30:26 浏览:315
小鹏的解压 发布:2024-11-28 05:10:07 浏览:21
ibm存储售后 发布:2024-11-28 05:00:39 浏览:32
python监控进程脚本 发布:2024-11-28 04:54:47 浏览:180
android加载html页面 发布:2024-11-28 04:54:38 浏览:901
噻苯隆如何配置 发布:2024-11-28 04:53:56 浏览:395
普通电脑改服务器风道风罩 发布:2024-11-28 04:52:28 浏览:454
什么安卓手机像8p一样 发布:2024-11-28 04:43:17 浏览:225
连接数据库参数 发布:2024-11-28 04:43:15 浏览:808