【问题标题】:Sharing a screenshot in Android to social media with minimal permissions以最少的权限将 Android 中的屏幕截图分享到社交媒体
【发布时间】:2025-12-22 15:10:09
【问题描述】:
您能否使用 Intent ACTON_SEND 共享屏幕截图而不将其保存到外部存储(如在 getExternalStorageDirectory() 中),而是将其保存到 getFilesDir() 指向的任何位置?甚至更好 - 根本不保存屏幕截图。
或者有更好的方法吗?
我正在尝试将屏幕截图共享添加到 cocos2d-x 游戏中。
我想尽量减少游戏需要被授予的权限,它应该在有和没有 SD 卡的情况下都可以使用。
【问题讨论】:
标签:
android
java-native-interface
cocos2d-x
android-permissions
【解决方案1】:
您可以使用 Intent ACTON_SEND 共享屏幕截图...通过将其保存到 getFilesDir() 指向您的任何位置吗?
您可以使用FileProvider 将来自getFilesDir() 的文件提供给第三方。您将使用从FileProvider 获得的content: Uri,在您的ACTION_SEND Intent 的EXTRA_STREAM 中。
甚至更好 - 根本不保存屏幕截图。
这有点冒险。没有什么能阻止您创建自己的 ContentProvider,它从您的堆空间提供 PNG 以响应 openFile()。但是,如果您的进程在其他应用程序在 PNG 中完成流式传输之前终止,那么您就有麻烦了。
没有并且 SD 卡可用
外部存储在大多数 Android 设备上是不可移动的。