- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试制作一个应用程序,要求用户选择一个图像文件,然后通过 Intent 将其发送到另一个应用程序(在这种情况下是 Whatsapp,但这应该适用于其他应用程序)
我这样做是为了请求文件:
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
intent.addCategory(Intent.CATEGORY_OPENABLE);
try {
startActivityForResult(
Intent.createChooser(intent, "Select a File to Upload"),
FILE_SELECT_CODE);
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(this, "Please install a File Manager.", Toast.LENGTH_SHORT).show();
}
这会返回一个“content://”URI,但是当通过 intent 发送它时:
if (isPackageExisted(whatsAppPackage)) {
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "Some text");
sendIntent.putExtra(Intent.EXTRA_STREAM, imageUri);
sendIntent.setType("image/*");
sendIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
sendIntent.setPackage(whatsAppPackage);
startActivity(sendIntent);
}else{
goToGooglePlay(whatsAppPackage);
}
Whatsapp 显示 toast 说文件格式不受支持,我可以在 logcat 上看到堆栈跟踪
java.lang.ClassCastException: android.net.Uri$StringUri cannot be cast to java.util.ArrayList
at android.os.Bundle.getParcelableArrayList(Bundle.java:838)
at android.content.Intent.getParcelableArrayListExtra(Intent.java:5405)
at com.whatsapp.ContactPicker.c(ContactPicker.java:12)
at com.whatsapp.ContactPicker.onCreate(ContactPicker.java:526)
at android.app.Activity.performCreate(Activity.java:6251)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
...
我不确定我是否可以与另一个应用共享“选择器应用”uri,这与权限有关吗?
这样做的正确方法是什么?我是否需要复制该文件以便我的应用程序能够共享它?
编辑:
这适用于 Gmail 等其他应用程序,但不适用于 whatsapp,因此是否有适用于所有或大多数应用程序的解决方案?我不在乎是否必须制作单独的共享方法,但 whatsapp 是必须的。
最佳答案
代码在真实设备上运行良好,但在 android 模拟器上却无法运行。
我没想到,为了以防万一,我已经在电话里试过了。
关于android - 从 ACTION_PICK 共享文件 uri,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51208503/
假设我有程序员和艺术家在做一个项目。艺术家有一些他们关心的文件夹: /Doodles /Images/Jpgs 也许程序员有一个这样的文件夹: /Code/View/Jpgs Mercurial 中保
我目前正在开发一个 iOS 应用程序(使用 Swift 3)。为了提高分享的用户体验,我想集成What's App。 事实上,经过一些操作后,用户可以根据需要与 UIActivityViewContr
我想与新的 api 共享图像。 如果我有一个文件的上传表单,我可以与 api 共享该文件,但我试图共享一个本地文件会打破我的头。这是我的尝试: function sharePage(){ const
我在 Azure 门户中设置了一个 iOS 应用来与 OneDrive for Business 集成。 在“对其他应用程序的权限”中,我们选择了所有权限 - Microsoft Graph - Of
所以我让我的应用程序创建一个文件,在本例中它实际上是一个动画 .gif。此动画 .gif 已保存在设备上并已准备就绪 - 我现在要做的是在用户单击“共享”按钮时共享此文件。 简单地说,我怎样才能做到这
我正在为 Android 开发一个应用程序,它使用 Dropbox 来组织文件。我正在探索 Dropbox API,但它的描述和帮助是有限的,因为没有 Dropbox API 的文档。 我仍然希望通过
我的 android 应用程序中有一个文件列表,我希望能够获取选定的项目并通过电子邮件或任何其他共享应用程序发送它们。这是我的代码。 Intent sendIntent = new Intent();
我想知道如何在 Flutter 应用中共享文件? 我看到了一些关于将 Intents 与 mojo 结合使用的旧引用,但似乎不再存在。这似乎是我们应该能够以跨平台方式处理的标准功能(显然 ios 和
如果没有相关文件,我希望从共享位置(绝对路径)提供默认的 robots.txt 文件。 我试过了,但运气不好: location = /robots.txt { expires 30d;
我使用 flutter-darts 创建了 QR码生成应用程序。除了共享部分,其他一切都很好。我使用以下代码共享了我生成的 png图像。 Future _captureAndSharePng() as
我用下面的代码分享一张图片,图片类型是png就可以了。但我很惊讶,如果图像类型是 jpeg,它仍然可以。为什么?谢谢! Intent sharingIntent = new Intent(Intent
我想知道如何使用 drive-sdk 和 python 与用户共享文件。我一直在使用下面的代码,但它不会与指定用户共享文件,也不会产生错误: ... Permission = { 'value':
我正在尝试制作一个应用程序,要求用户选择一个图像文件,然后通过 Intent 将其发送到另一个应用程序(在这种情况下是 Whatsapp,但这应该适用于其他应用程序) 我这样做是为了请求文件: In
我使用来自“react-native”的{Share}。我成功分享了消息,没问题。 现在,我动态生成 PDF 并将其保存在本地。是否可以像共享 URL 一样共享 PDF?我没有找到解决方案。 想了想,
我们有一套应用程序依赖于外部存储上的目录/文件共享。我目前已选择退出 Android 10 操作系统对范围的更改 (requestLegacyExternalStorage),但这即将消失,我花了很多
我使用 TypeScript 通过面向对象编程对我的 javascript 文件进行编码。我想使用 Node 模块 https://npmjs.org/package/typescript-requi
我有一些文件想与任何应用程序共享。我用这个代码 var fileDAta = NSData.FromFile(path); UIActivityViewController activityViewC
我正在运行 docker 容器。在那里运行 arch linux。 在容器内,我有一些文件夹/文件,我想从我的 MAC 访问它们。 我正在使用 samba 共享将容器中的文件共享到我的 MAC。到目前
我曾经写过这样的代码,在使用instruments的时候,发现内存泄露。 NSURL *filePath = [NSURL fileURLWithPath:path];
我一直在关注 Google 的文档以在云端硬盘上共享文件:Share Files 如果我从 Google 云端硬盘界面上传文件到 Google 云端硬盘,然后尝试从我的网络应用程序共享此文件,我会在我
我是一名优秀的程序员,十分优秀!