Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android和Javascript-从两个功能到一个_Javascript_Android_Android Gallery - Fatal编程技术网

Android和Javascript-从两个功能到一个

Android和Javascript-从两个功能到一个,javascript,android,android-gallery,Javascript,Android,Android Gallery,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 == RESUL

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;
}
WebAppInterface.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,然后调用loadImage。 但是我想合并这些函数。 因此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();
}
但它不起作用。我想我知道为什么,因为GetURI是在设置字符串URI之前被调用的

那么我该如何解决这个问题呢


如果有人知道一个更好的标题,请告诉我。

好的,我想我找到了一个解决方案,但我不知道这是否是最好的方法。 因此,对于那些想知道我是如何修复它的人:

我更改了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,当用户在ActivityResult上拾取图像时,它将为true

因此,代码将是:

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;
}