我正在使用顯示一些漂亮的HTML的WebView。其中一張圖片應該從圖片庫中選擇並顯示在WebView中。Android:以編程方式從WebView中的圖像庫獲取IMG SRC
所以,基本上,我需要Javascript來訪問Java(爲了打開圖庫),以及Java訪問的Javascript(得到結果後)
我用下面的代碼:
public class JavaScriptInterface
{
Context mContext;
Uri currImageURI;
JavaScriptInterface(Context c)
{
mContext = c;
}
public void imageFromGallery()
{
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"),1);
}
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
String retResult="";
if (resultCode == RESULT_OK)
{
if (requestCode == 1)
{
currImageURI = data.getData();
retResult=getRealPathFromURI(currImageURI);
}
}
mWebView.loadUrl("javascript:updateImage("+retResult+")");
}
public String getRealPathFromURI(Uri contentUri)
{
String [] proj={MediaStore.Images.Media.DATA};
Cursor cursor = managedQuery(contentUri,proj,null,null,null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}
}
現在,從我的腳本調用Java工作正常。我添加了一個onClick="Android.imageFromGallery()"
,並正確打開了圖庫。 順便說一句 - 它讓我在Astro,文件管理器和圖庫之間做出選擇。我如何限制它到圖庫中,以便它不要求用戶使用哪個文件瀏覽器?
無論如何,問題出現在Java調用Javascript來傳遞結果。 顯然updateImage()
(我的JS函數只顯示圖像名稱)沒有從Java代碼中調用。
我在這裏做錯了什麼?
編輯:解決了第一個問題 - 我可以用
Intent getImageFromGalleryIntent = new Intent(Intent.ACTION_PICK,MediaStore.Images.Media.INTERNAL_CONTENT_URI);
startActivityForResult(getImageFromGalleryIntent, 1);
您是否嘗試過'mWebView.loadUrl(「JavaScript的: function(){alert('working')}「);'只是爲了檢查JS調用是否被執行?這可能是因爲webview可能如何處理調用上下文,您將不得不在匿名函數中包裝JS調用。這只是一個預感。 – Audrius 2011-06-02 12:34:35
不,JS根本沒有被調用,即使我按你的建議包裝它:( – Ema 2011-06-02 12:48:04
所以下一個問題:loadUrl工作嗎?嘗試把一個真正的URL而不是JS調用,並看到它加載到你的WebView中。 – Audrius 2011-06-02 12:52:41