Android & Javascript - 从两个函数到一个函数
Android & Javascript - From two functions to one
MainActivity.java
public String URI = null;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 0 && resultCode == RESULT_OK)
{
Uri pickedImage = data.getData();
URI = pickedImage.toString();
}
}
public String GetURI()
{
return URI;
}
网络应用界面.java
@JavascriptInterface
public void GetPicture()
{
Intent galleryIntent = new Intent(Intent.ACTION_PICK);
galleryIntent.setType("image/*");
((MainActivity) mContext).startActivityForResult(galleryIntent, 0);
}
@JavascriptInterface
public String GetURI()
{
return getRealPathFromURI(mContext, Uri.parse(((MainActivity) mContext).GetURI()));
}
我正在使用以下Javascript函数
function GetPicture()
{
Android.GetPicture();
}
function loadImage()
{
document.getElementById("img").src = Android.GetURI();
}
第一个用于获取图片并将完整路径存储在字符串中。第二个函数用于从字符串中获取完整路径。
目前这是有效的,因为我首先调用GetPicture,然后加载图像。但我想"合并"这些功能。所以Javascript将是:
function loadImage()
{
document.getElementById("img").src = Android.GetPicture();
}
所以我将代码从WebAppInterface.java更改为:
@JavascriptInterface
public String GetPicture()
{
Intent galleryIntent = new Intent(Intent.ACTION_PICK);
galleryIntent.setType("image/*");
((MainActivity) mContext).startActivityForResult(galleryIntent, 0);
return ((MainActivity) mContext).GetURI();
}
但它不起作用。我想我知道为什么,因为在设置字符串 URI 之前调用 GetURI。
那么我该如何解决这个问题呢?
如果有人知道更好的标题,请告诉我。
好的,我想我找到了解决方案,但我不知道这是否是最好的方法。所以对于那些想知道我是如何修复它的人:
我更改了 GetPicture 方法
@JavascriptInterface
public String GetPicture()
{
Intent galleryIntent = new Intent(Intent.ACTION_PICK);
galleryIntent.setType("image/*");
((MainActivity) mContext).startActivityForResult(galleryIntent, 0);
while(((MainActivity) mContext).IsFinished == false){}
return ((MainActivity) mContext).GetURI();
}
在 MainActivity 中.java我添加了一个名为 IsFinished 的公共布尔值(设置为 false),当用户选择图像 (onActivityResult) 时,它将是真的。
所以代码将是:
public String URI = null;
public boolean IsFinished = false;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 0 && resultCode == RESULT_OK)
{
Uri pickedImage = data.getData();
URI = pickedImage.toString();
IsFinished = true;
}
}
public String GetURI()
{
return URI;
}
相关文章:
- JQuery合并了keyup和focusout两个函数
- 组合两个javascript函数
- 访问$.ajax()函数中的两个不同数组
- javascript函数,它接受两个输入:一个对象和一个键,并返回对象中该键的相应值
- 在输入字段上有两个函数调用,一个在Blur上,一个不在Angular中
- 递归|两个函数名
- DataTables合并了两个独立表中的jQuery/Javascript函数
- 为什么jQuery文件的函数中有两个参数,但只接收一个参数
- 使用带有两个参数的函数的javascript映射
- 用于交换两个变量的 JavaScript 函数
- 当客户端将两个按钮的javascript函数参数修改为相同时,SQL/PHP会更新多行
- JavaScript函数,用于计算两个日期之间的年、月和天数
- 同一事物的两个函数,一个崩溃,另一个不崩溃,为什么
- 如何调用两个函数是一种html输入类型
- 广义化对两个性质起反作用的两个函数
- 两个函数之间的角度承诺
- 在keyup更改上运行两个函数
- 带有两个变量函数的Ajax提交表单
- 为什么这两个JavaScript函数调用具有相同的“;这个“;价值
- javascript函数包含两个元素和web音频api