我用WebView相机上传了图片,但我想上传两张图片, 第一张图片上传但第二张图片没有上传原因? 我需要做些什么才能解决这个问题? 注释代码是否需要详细信息。 我的代码在下面
MyCustomwebviewRenderer.cs
Control.SetWebChromeClient(new WebViewChromeClient((uploadMsg, acceptType, capture) =>
{
MainActivity.UploadMessage = uploadMsg;
if (Build.VERSION.SdkInt < BuildVersionCodes.Kitkat)
{
var i = new Intent(Intent.ActionCameraButton);
//To set all type of files
i.SetType("image/*");
//Here File Chooser dialog is started as Activity, and it gives result while coming back from that Activity.
((MainActivity)this.Context).StartActivityForResult(Intent.CreateChooser(i, "File Chooser"), MainActivity.FILECHOOSER_RESULTCODE);
}
else
{
File imgFile = new File("/sdcard/Pictures/Repair_Image.jpg");
mCapturedImageURI = Android.Net.Uri.FromFile(new File(imgFile.ToString()));
if (mCapturedImageURI != null)
{
mCapturedImageURI.Dispose();
imgFile.Delete();
}
if (camera!=null)
{
camera.Release();
}
File imageStorageDir = new File(global::Android.OS.Environment.GetExternalStoragePublicDirectory(global::Android.OS.Environment.DirectoryPictures),"");
if (!imageStorageDir.Exists())
{
imageStorageDir.Mkdir();
}
File file = new File(imageStorageDir + File.Separator +"Repair_Image"+ ".jpg");
mCapturedImageURI = Uri.FromFile(file);
Intent captureIntent = new Intent(Android.Provider.MediaStore.ActionImageCapture);
captureIntent.PutExtra(MediaStore.ExtraOutput, mCapturedImageURI);
((MainActivity)this.Context).StartActivityForResult(captureIntent, MainActivity.FILECHOOSER_RESULTCODE);
}
}));
我的Mainactivity.cs
protected override void OnActivityResult(int requestCode, Result resultCode, Intent intent)
{
imgFile = new File("/sdcard/Pictures/Repair_Image.jpg");
mCapturedImageURI = Android.Net.Uri.FromFile(new File(imgFile.ToString()));
// Handles the response from the FileChooser
if (requestCode == FILECHOOSER_RESULTCODE && resultCode == Result.Ok)
{
if (null == UploadMessage)
return;
Java.Lang.Object result = intent == null || resultCode != Result.Ok ? mCapturedImageURI : intent.Data;
UploadMessage.OnReceiveValue(result);
UploadMessage = null;
}
// UploadMessage.OnReceiveValue(null);
}
答案 0 :(得分:1)
我很好!
protected override void OnActivityResult(int requestCode, Result resultCode, Intent intent)
{
var file = getLatestFilefromDir("/sdcard/Pictures/CeptePortal/");
mCapturedImageURI = Android.Net.Uri.FromFile(file);
if (requestCode == FILECHOOSER_RESULTCODE && resultCode == Result.Ok)
{
if (null == UploadMessage)
return;
Android.Net.Uri result = null;
if (resultCode == Result.Ok)
{
result = intent == null ? mCapturedImageURI : intent.Data;
}
try
{
UploadMessage.OnReceiveValue(result);
UploadMessage = null;
}
catch (Exception ex)
{
throw;
}
}
}
private Java.IO.File getLatestFilefromDir(String dirPath)
{
File dir = new File(dirPath);
File[] files = dir.ListFiles();
if (files == null || files.Length == 0)
{
return null;
}
File lastModifiedFile = files[0];
for (int i = 1; i < files.Length; i++)
{
if (lastModifiedFile.LastModified() < files[i].LastModified())
{
lastModifiedFile = files[i];
}
}
return lastModifiedFile;
}