實現分享功能的幾個辦法
1.調用系統的分享功能
2.通過第三方SDK,如ShareSDK,友盟等
3.自行使用各自平臺的SDK,比如QQ,微信,微博各自的SDK
這里就記錄下第一種辦法。
分享文本信息
Intent textIntent = new Intent(Intent.ACTION_SEND); textIntent.setType("text/plain"); textIntent.putExtra(Intent.EXTRA_TEXT, "這是一段分享的文字"); startActivity(Intent.createChooser(textIntent, "分享"));效果如下圖:

分享單張圖片
String path = getResourcesUri(R.drawable.shu_1); Intent imageIntent = new Intent(Intent.ACTION_SEND); imageIntent.setType("image/jpeg"); imageIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(path)); startActivity(Intent.createChooser(imageIntent, "分享"));分享多個文件
ArrayList<Uri> imageUris = new ArrayList<>(); Uri uri1 = Uri.parse(getResourcesUri(R.drawable.dog)); Uri uri2 = Uri.parse(getResourcesUri(R.drawable.shu_1)); imageUris.add(uri1); imageUris.add(uri2); Intent mulIntent = new Intent(Intent.ACTION_SEND_MULTIPLE); mulIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris); mulIntent.setType("image/jpeg"); startActivity(Intent.createChooser(mulIntent,"多文件分享"));上面幾個例子的效果都是一樣的,創建一個選擇器,讓用戶自己選擇分享到哪里。
這里有一點得注意,就是通過這種方法進行分享,Intent傳遞的數據的Type(就是setType()方法)一定要控制好,不然會出錯。(至于為什么后面說)。
其中由于是分享的res中的圖片,故轉變為uri,方法在這:
private String getResourcesUri(@DrawableRes int id) { Resources resources = getResources(); String uriPath = ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + resources.getResourcePackageName(id) + "/" + resources.getResourceTypeName(id) + "/" + resources.getResourceEntryName(id); Toast.makeText(this, "Uri:" + uriPath, Toast.LENGTH_SHORT).show(); return uriPath; }指定分享到微信
Intent wechatIntent = new Intent(Intent.ACTION_SEND); wechatIntent.setPackage("com.tencent.mm"); wechatIntent.setType("text/plain"); wechatIntent.putExtra(Intent.EXTRA_TEXT, "分享到微信的內容"); startActivity(wechatIntent);效果如下:

指定分享到QQ
Intent qqIntent = new Intent(Intent.ACTION_SEND); qqIntent.setPackage("com.tencent.mobileqq"); qqIntent.setType("text/plain"); qqIntent.putExtra(Intent.EXTRA_TEXT, "分享到微信的內容"); startActivity(qqIntent);效果如下:

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。
新聞熱點
疑難解答