我正在尝试通过ACTION\u SEND intent将文件上载到webview应用程序。如果他们选择在应用程序中使用openFileChooser上传文件,我已经可以使用它了,但我需要它在他们单击文档或画廊应用程序中的共享时工作。所以,我非常需要绕过openFileChooser,因为已经选择的文件及其Uri在我的意图中,我只需要实际上传它。我想重蹈openFileChooser的覆辙,但不知道如何做到这一点。
我认为我最大的障碍是不知道如何获取/创建/忽略ValueCallback uploadMsg,当然,除非有办法完全避免这种情况。
这是我的意图和openFileChooser,但我需要在收到意图时绕过它,所以我有
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工作正常,带有用户输入,但我需要能够在接收到意图时没有用户输入
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(结果)(取自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
正如您问题的第一条评论所说,更多的代码将有助于诊断这一问题,但接收动作发送意图的一般方式如下所示。
在Android清单中为您的活动配置ACTION_SEND
作为意图过滤器。
<application>
...
<activity>
...
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
您可以选择设置<代码>
然后在您的活动中,可以使用getIntent()
和Intent。getData()
方法来处理传入的发送意图。
@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.
}
我在API网关中创建了一个API,用于将音频文件上载到s3,该文件作为多部分/表单数据从本地PC发送。 API集成请求如下所示 在URL路径参数中,添加bucket作为param,直接添加bucket名称 当我尝试上载文件时,收到错误响应, 需要做哪些更改?
可能的重复: 这个
问题内容: 我可能迟到了CI / CD派对,但总比没有好。到目前为止,我已经能够在不包含XCode的单独MAC上设置Jenkins。我将此MAC用作24x7小型服务器,以进行较小的操作。浪费大量时间进行归档,然后将生成的内容上传到我的iOS应用程序的testflight上,因此我想到了设置CI / CD流程的准备。 设置Jenkins之后,我可以为指定目标(发布/调试)生成.ipa文件。 现在,我
问题内容: 这是我的代码,但这是针对单个文件的解决方案。 我可以像下面的单个文件一样共享多个文件和上载吗? 问题答案: 是的,但是您需要使用而不是。 这绝对可以简化,但我在其中保留了一些内容,以便您可以分解所需的每个步骤。 更新 :从API 24开始,共享文件URI将导致FileUriExposedException。为了解决这个问题,您可以将compileSdkVersion切换为23或更低版本
问题内容: 在过去的几天里,我一直在努力用jQuery和AJAX提交表单。我面临的问题是在表单字段中上传图像。 我的表格是这样的: 我的用于获取表单值的jQuery脚本如下所示: 但是,如果image返回null,则返回除image 1以外的所有字段值。 如何存储在数据数组中? 我要存储,以便可以通过AJAX将值发送到服务器。 问题答案: 对于上传单个图像,像这样 对于多张图片,您将不得不循环不同
任何帮助都很感激。