MCPcopy Index your code
hub / github.com/baishixian/Share2

github.com/baishixian/Share2 @0.9.3

Chat with this repo
repository ↗ · DeepWiki ↗ · release 0.9.3 ↗ · + Follow
37 symbols 86 edges 6 files 25 documented · 68%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Share2

Share2 利用了 Android 系统的原生 API 实现了分享功能,支持文本信息、图片、音视频等其他类型文件的分享,兼容处理了不同系统版本下的常见问题,并在一些主流应用上进行了兼容测试。

系统兼容 版本号
最低 API 11
最高 API 27

实现效果

相关文章:

利用 Android 系统原生 API 实现分享功能利用 Android 系统原生 API 实现分享功能(2)

添加项目依赖

在 Project 的 build.gradle 下添加 jcenter 仓库

repositories {
    jcenter()
}

在 Module 的 build.gradle 下添加 Share2 依赖

compile 'gdut.bsx:share2:0.9.2'

使用 Share2 进行分享

分享一张图片

new Share2.Builder(this) 
      // 指定分享的文件类型
      .setContentType(ShareContentType.IMAGE)
      // 设置要分享的文件 Uri
      .setShareFileUri(shareImageUri)
      // 设置分享选择器的标题
      .setTitle("Share Image")
      .build()
      // 发起分享
      .shareBySystem();

Share2 支持多种类型的内容分享,你可以通过 setContentType(type) 来进行设置。分享文件时可以调用setShareFileUri 方法来设置文件的 Uri

注意:Uri 必须是系统 ContentProvider 返回的,不能是自定义 FileProvider 返回的 Uri,不然会造成其他第三方应用无法识别,比如QQ、微信等应用会提示获取不到文件内容。

相关内容可参考我的文章:利用 Android 系统原生 API 实现分享功能(2)

对于只知道文件路径的情况,Share2 提供了 FileUtil.getFileUri() 方法来帮助你获取对应文件的 Uri

// FileUtil.Class
public static Uri getFileUri (Context context, @ShareContentType String shareContentType, File file)

如果不知道文件类型,参数 shareContentType 可以直接传入 null

其他一些使用场景

分享其他类型的内容

分享文本内容时:

new Share2.Builder(this)
    .setContentType(ShareContentType.TEXT)
    // 设置要分享的文本内容
    .setTextContent("This is a test message.")
    .setTitle("Share Text")
    .build()
    .shareBySystem();

分享未知类型的文件时:

new Share2.Builder(this)
    .setContentType(ShareContentType.FILE)
    .setShareFileUri(fileUri)
    .build()
    .shareBySystem();

指定分享到特定的应用

某些场景下需要分享到特定的应用,可以使用下面这个方法:

/**
 * componentPackageName 指定接收分享的 APP 的包名
 * componentClassName 指定接收分享的 APP 的类名
 */
 public Builder setShareToComponent(String componentPackageName, String componentClassName);

比如当我们要分享到微信朋友圈时:

builder.setShareToComponent("com.tencent.mm", "com.tencent.mm.ui.tools.ShareToTimeLineUI")

设置分享时是否强制使用选择器

如果系统设置了某些类型文件的默认打开方式,当我们进行分享时会直接跳转到默认应用。调用下面的方法可以设置每次分享时是否都要显示选择器,即使系统已经有默认的打开方式了。

// 默认是 true
public Builder forcedUseSystemChooser (boolean enable)

设置分享完成后的回调

通过下面的方法可以设置分享完成后在当前分享页 Activity 的 onActivityResult 方法中接收回调:

public Builder setOnActivityResult (int requestCode)

Core symbols most depended-on inside this repo

shareBySystem
called by 5
share2/src/main/java/gdut/bsx/share2/Share2.java
setContentType
called by 5
share2/src/main/java/gdut/bsx/share2/Share2.java
setTitle
called by 5
share2/src/main/java/gdut/bsx/share2/Share2.java
build
called by 5
share2/src/main/java/gdut/bsx/share2/Share2.java
getShareFileUri
called by 4
app/src/main/java/gdut/bsx/share2/demo/DemoActivity.java
setShareFileUri
called by 4
share2/src/main/java/gdut/bsx/share2/Share2.java
getDataColumn
called by 2
share2/src/main/java/gdut/bsx/share2/FileUtil.java
openFileChooser
called by 1
app/src/main/java/gdut/bsx/share2/demo/DemoActivity.java

Shape

Method 31
Class 6

Languages

Java100%

Modules by API surface

share2/src/main/java/gdut/bsx/share2/Share2.java15 symbols
share2/src/main/java/gdut/bsx/share2/FileUtil.java12 symbols
app/src/main/java/gdut/bsx/share2/demo/DemoActivity.java6 symbols
app/src/test/java/gdut/bsx/share2/ExampleUnitTest.java2 symbols
app/src/androidTest/java/gdut/bsx/share2/ExampleInstrumentedTest.java2 symbols

For agents

$ claude mcp add Share2 \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact