- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试通过 ACTION_SEND Intent 将文件上传到 WebView 应用程序。如果他们选择在应用程序内部使用 openFileChooser 上传文件,我已经让它工作,但当他们从文档或图库应用程序单击共享时,我需要它工作。所以,我非常需要绕过 openFileChooser,因为已经选择了一个文件并且它的 Uri 在我的 Intent 中,我只需要实际上传它。我想借鉴 openFileChooser 的做法,但我不确定该怎么做。
我认为我最大的障碍是不知道如何获取/创建/忽略 ValueCallback uploadMsg,当然,除非有一种方法可以完全避免这种情况。
这是我的 Intent 和 openFileChooser,但我需要在收到 Intent 时绕过它,所以我有
intent = getActivity().getIntent();
if(intent != null){
intentAction = intent.getAction();
if(!TextUtils.isEmpty(intentAction)){
if(intentAction.equalsIgnoreCase(Intent.ACTION_SEND)){
if(intent.getExtras()!=null){
//get file from extra and piggyback off upload handler used in openFileChooser
}
}
}
我的 openFileChooser 可以正常工作,有用户输入,但我需要能够在没有用户输入的情况下接收到 Intent
WebChromeClient chromeClient = new WebChromeClient() {
@Override
public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType,
String capture) {
mUploadHandler = new UploadHandler(WebFragment.this);
mUploadHandler.openFileChooser(uploadMsg, acceptType, capture);
}
所以我需要以某种方式获得一个有效的 ValueCallback Uri 以设置为创建 openFileChooser 的上传消息,这样当我在这里执行 mUploadMessage.onReceiveValue(result)(取自 google 的 webkit 包)时
void onResult(int resultCode, Intent intent) {
if (resultCode == Activity.RESULT_CANCELED && mCaughtActivityNotFoundException) {
mCaughtActivityNotFoundException = false;
return;
}
Uri result = intent == null || resultCode != Activity.RESULT_OK ? null
: intent.getData();
if (result == null && intent == null && resultCode == Activity.RESULT_OK) {
File cameraFile = new File(mCameraFilePath);
if (cameraFile.exists()) {
result = Uri.fromFile(cameraFile);
mController.getActivity().sendBroadcast(
new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, result));
}
}
mUploadMessage.onReceiveValue(result);
mHandled = true;
mCaughtActivityNotFoundException = false;
}
所以,长话短说,我需要一个有效的 ValueCallback<Uri>
为了搭载 Android/webkit 的 onReceiveValue(result)/WebView 的上传处理程序,我不确定如何在没有用户输入的情况下从设备打开上传。
最佳答案
正如对您问题的第一条评论所说,更多代码将有助于对此进行诊断,但接收 ACTION_SEND
的通用方法 Intent 如下。
配置ACTION_SEND
作为Intent Filter在您的 Activity 的 Android list 中。
<application>
...
<activity>
...
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
您可以选择设置多个 <data android:mimeType=XXX>
元素,如果您只想接受某些类型的文件。
然后在您的 Activity 中,您可以使用 getIntent()
和 Intent.getData()
处理传入发送 Intent 的方法。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
Uri sharedFile = intent.getData();
// We can now use the URI of the file / item in
// the WebView. Probably want to do this after onCreate
// so that the WebView has fully initialised.
}
关于android - 如何通过 ACTION_SEND Intent 将文件上传到 webview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29503611/
我需要共享音频(音乐)文件,但是当我使用以下代码时,却得到了具有不同名称的文件,这不好。因为它是音乐文件,所以我需要保留所有属性,例如艺术家,文件的标题和名称。有什么办法吗? fina
我似乎无法弄清楚这一点:如何响应 ACTION_VIEW 和 ACTION_SEND Intent ?我将它们放在我的 list 文件中(它们出现在应用程序的下拉列表中)。我需要做的是响应这些 Int
当使用 ACTION_SEND 发送邮件时,有没有办法检查结果是否成功? 这是我的代码示例: Intent emailIntent = new Intent(android.content.Inte
我将应用中的一些对象保存为具有自定义文件扩展名 (.xyz) 的文件,这些文件可以保存到其他应用中。现在,例如,一旦我在 Dropbox 上有这样一个文件并尝试导出它,它应该会显示我的应用程序。现在让
我正在使用 Android Intent与 ACTION_SEND和 EXTRA_STREAM通过 ContentProvider 共享生成的 PNG .这非常适用于电子邮件/GMail、Flickr
首先我看到了我遇到的同样的问题,在这里解决了。但即使那里有答案,我也没有解决。而且我找不到添加评论的地方。只回答,作为一个答案,我不确定人们是否会收到通知。这就是为什么我要创建一个新问题。对不起:S
我正在使用: Intent i = new Intent(Intent.ACTION_SEND); i.setType("image/jpeg"); (...) 分享在我的应用程序中生成的图像。我想将
我正在使用一个带有 ACTION_SEND 的 Intent,我需要分享不同的文本。我需要为 Gmail 发送文本,我需要为 Twitter 发送其他文本。取决于应用程序。能否在应用发送分享文本前获取
问题的简短版本.. 是否可以启动 ACTION_SEND Intent 以共享光盘上的文件,但共享使用的文件名与光盘上的文件名不同? Intent shareIntent = new Intent(I
每次我创建一个从我的应用程序发送电子邮件的操作时,它都会提示许多选项,包括 QR 客户端... 有没有办法强制只通过电子邮件客户端发送? 发送邮件代码 String rec[] = { owner.e
我想打开 native 应用程序发送短信,但应该已经有电话号码了。我找到了 ACTION_SEND 但是当我调用我的函数时返回错误: 04-26 11:59:15.991: ERROR/Android
当您使用 ACTION_SEND Intent (使用额外的 EXTRA_STREAM)将文件附加到电子邮件时,电子邮件应用程序是否将该附加文件复制到它自己的位置?我的应用程序创建了一个文件并将其附加
我正在尝试将文本文件附加到电子邮件中,但出现了一个奇怪的错误,希望有人能帮助我。当用户从选择器中选择 gmail 应用程序时,它工作正常,但如果他们选择内置邮件应用程序,他们会看到提示“无法附加文件”
我已使用以下代码在其他应用程序中分享我的内容: Intent intent = new Intent(Intent.ACTION_SEND); intent.putExtra(Inte
我已经成功地能够使用 ACTION_SEND Intent ,当在图库中按下共享按钮时,它会在列表中显示我的应用程序。我的应用程序基本上将所选图片发送到我的计算机,不需要用户进一步输入。而不是在列表中
我正在接收来自不同应用程序的使用默认共享机制 (ACTION_SEND) 发送的意向。 如果它是一个文件——我需要复制它。 我不需要文件的完整路径,因为我可以直接用流打开它。 InputStream
我知道如何使用 ACTION_SEND 分享 A 文本。 Intent sendIntent = new Intent(); sendIntent.setAction(Intent.ACTION_SE
我正在使用 ACTION_SEND 从我的应用中的内容提供商发送文件作为 GMail 中的电子邮件附件。这很好用,只是我无法以编程方式指定附件的文件名。当我的 URI 是 content://my.d
我需要从我的 Activity 发送彩信,但我不知道在没有 Intent 的情况下该怎么做。有 Intent ,我发帖是这样的: Intent sendIntent = new Intent(Inte
我有以下代码: Uri screenshotUri = Uri.fromFile(file); Intent intent = new Intent(Intent.ACTION_SEN
我是一名优秀的程序员,十分优秀!