我开发了一个使用Webview Component的Android应用程序.我在代码中使用了以下行,
webViewScores.getSettings().setJavaScriptEnabled(true);
Run Code Online (Sandbox Code Playgroud)
由于这一行,它显示Lint警告,因为Using setJavaScriptEnabled can introduce XSS vulnerabilities into you application, review carefully.我知道我可以通过@SuppressLint("SetJavaScriptEnabled")在我的方法或类级别上面写这一行来抑制此警告.但我的问题是,这有什么替代解决方案吗?我的意思是我们可以在Webview中设置Java Script吗?
我已经经历了怪异的行为的大量使用WebView中Android,我不知道为什么有之间那么多diffrences WebView和Browser安装在每台手机上?
举个例子,我已经开发了一些应用程序,必须要显示HTML的内容,这无论是包含jquery-mobile,flash,javascript,YouTube嵌入式等.所以我在里面显示这些页面时遇到了很多问题WebViews.它们根本不会显示,只是空白,视频无法播放等等.奇怪的是,如果在Browser手机上安装打开它们,它们可以正常工作.我启用了JavaScript,我尝试了不同WebSettings,我已经设置WebChromeClient并WebViewClient寻找javascript错误......但没有任何效果.
所以我得出结论,该WebView组件Browser与手机上安装的应用程序完全不同.我想每个制造商都会自己Browser支持尽可能多的页面,而WebView剩下的就是标准的,包括在内Android SDK.
我对吗?或者还有其他原因/解释?谢谢.
编辑: @ondoteam建议的所有内容都已启用并暂时设置.我不再有那些网站的引用,无论如何都是内部的.
我正在开发一款Android应用.基本上它是一个WebView和一个progressBar.Facebook的移动网站(m.facebook.com)被加载到WebView.
当我单击"选择文件"按钮上传图像时,没有任何反应.我已经尝试了所有解决方案,但没有一个能够正常工作.我正在测试运行4.0.3的Galaxy Note(GT-N7000).我的最低SDK版本是版本8.

这是我的代码了解更多信息......
public class IStyla extends Activity {
private ValueCallback<Uri> mUploadMessage;
private final static int FILECHOOSER_RESULTCODE = 1;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == FILECHOOSER_RESULTCODE) {
if (null == mUploadMessage)
return;
Uri result = intent == null || resultCode != RESULT_OK ? null
: intent.getData();
mUploadMessage.onReceiveValue(result);
mUploadMessage = null;
}
}
private class MyWebChromeClient extends WebChromeClient {
public void openFileChooser(ValueCallback<Uri> uploadMsg) {
mUploadMessage = uploadMsg;
Intent i …Run Code Online (Sandbox Code Playgroud) 不幸的是,Android上有很多cookie管理器.Cookie HttpURLConnection由以下人员维护,java.net.CookieManagerCookie WebView由以下人员维护android.webkit.CookieManager.这些cookie存储库是独立的,需要手动同步.
我的应用程序使用HttpURLConnections和显示WebViews(它是本机HTML混合).当然,我希望两者共享所有cookie - 所以我将在整个过程中进行透明会话.
进一步来说:
简单地说 - 我正在寻找双向同步.或者甚至更好,让它们都使用相同的cookie存储库.您可以假设它们同时处于活动状态(如在不同的选项卡上).
问题:
有没有办法让两个使用相同的cookie存储库?
如果没有,建议的做法是手动同步?什么时候我应该同步,怎么样?
相关问题:这个问题解决了类似的问题,但只实现了单向同步(HttpURLConnection - > WebView).
我最好的想法:我真的想避免手动同步,所以我试着想如何让两者都使用相同的存储库.也许我可以创建自己的扩展核心处理程序java.net.CookieManager.我将使用它将其设置为核心cookie处理程序java.net.CookieHandler.setDefault().它的实现将是android.webkit.CookieManager处理程序实例的代理(对于我只是访问webkit管理器的每个函数).
我知道在这个论坛上已经以不同的格式提出了这个问题,但是到目前为止,没有一个答案 - 我接受或其他方式帮助了我.
我正在开发一个混合应用程序,它使用原生的Android,HTML和Adboe的Flex SDK(没有任何框架,如PhoneGap等,使用Android自己的WebView直接代码).
这是我面临的问题:
当应用程序启动时,首先触发flex sdk 的活动"AppEntry",它是一个空白活动,它只是设置flex SDK的上下文和初始设置.接下来,启动本机MainActivity,它使用WebView加载HTML项目.在Android 4.0.x(ICS)上,即使加载了URL,webview也会显示为空白(白色)(对于相关URL,已成功调用onPageFinished()).这是在第一次安装和启动应用程序时发生的,在停止应用程序后(通过从最近的应用程序栏中删除它),页面按预期加载.像这样重复重新启动有时会重现问题但频率不可预测.
有些事情需要考虑:
由于flex sdk约束,这些HTML文件不能直接存储在'/ assets'文件夹中,而是存储在assets文件夹中的目录结构中.
问题只发生在冰淇淋三明治上(我想知道的问题)!
我已经尝试过的东西:
2.
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setUseWideViewPort(true);
settings.setLoadWithOverviewMode(true);
settings.setSupportMultipleWindows(true);
settings.setJavaScriptCanOpenWindowsAutomatically(true);
settings.setLoadsImagesAutomatically(true);
settings.setDomStorageEnabled(true);
settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
settings.setSaveFormData(true);
settings.setAllowFileAccess(true);
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB){
settings.setAllowContentAccess(true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
settings.setAllowFileAccessFromFileURLs(true);
settings.setAllowUniversalAccessFromFileURLs(true);
}
}
settings.setAppCacheEnabled(true);
settings.setJavaScriptCanOpenWindowsAutomatically(true);
settings.setLoadsImagesAutomatically(true);
boolean enableZoom = true;
settings.setBuiltInZoomControls(enableZoom);
settings.setSupportZoom(enableZoom);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ECLAIR_MR1) {
initializePluginAPI(webView);
}
settings.setDatabaseEnabled(true);
Run Code Online (Sandbox Code Playgroud)
问题是在Play商店中删除我的应用评论评论.任何帮助或见解将不胜感激.
apache-flex android webview android-webview android-4.0-ice-cream-sandwich
在Android webview中加载移动网页和非移动网页的速度更快; 加载缓存还是根本不加载?
什么是推荐的加载方式?
现在,当我不在所有非移动站点加载缓存时,加载速度比在本机浏览器中加载缓存要慢得多.
嗨,我正在开发一个应用程序,因为我正在使用Android WebView.每当我启动webview活动时,从test.txt文件加载字符串html格式的数据.test.txt文件包含近2.5 MB的数据,加载test.txt文件后,如果幻灯片屏幕结束,则读取所有数据并按回.然后,随后启动webview活动需要更多时间来呈现数据.在第一次推出webview时,它花费的时间很少.在启动此活动之间,我没有收到任何错误/异常/崩溃.
我使用的是Android API等级18及以上版本
注意:我在这个问题上做了很多研究.我尝试从Android webview的解决方案慢和Android WebView性能没有用.
我不能使android:hardwareAccelerated ="true" < - 为什么因为它有很多副作用(我仍然使用这个,但我没有在这个问题上发现任何变化).
我不能使用 webview.getSettings().setRenderPriority(RenderPriority.HIGH);
setRenderPriority() - >此方法在API级别18中已弃用.建议不要调整线程优先级,并且在将来的版本中不支持此方法.
我的DataLoader.java类
public class DataLoader extends Activity {
private WebView webView = null;
// Progress Dialog
private ProgressDialog progressDialog;
String dataContent = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.web_view);
webView = (WebView)findViewById(R.id.text);
// Loading webview in Background Thread
new LoadWebView().execute();
}
class LoadWebView extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() { …Run Code Online (Sandbox Code Playgroud) 更新:解决了!问题与我的Viewpager而不是WebView有关.
我正在尝试向我WebView的内部添加一个"返回"功能Fragment.但我无法弄清楚如何:
public final class TestFragment extends Fragment {
static WebView mWeb;
private View mContentView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
mContentView = inflater.inflate(R.layout.webview, null);
mWeb = (WebView)mContentView.findViewById(R.id.webview);
WebSettings settings = mWeb.getSettings();
settings.setJavaScriptEnabled(true);
settings.setSupportZoom(false);
mWeb.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
mWeb.getSettings().setBuiltInZoomControls(false);
mWeb.loadUrl("myurl...");
mWeb.setOnKeyListener(new OnKeyListener(){
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && mWeb.canGoBack()) {
mWeb.goBack();
return true;
}
return false;
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
我也试过类似的东西:
@Override
public boolean onKeyDown(int keyCode, KeyEvent …Run Code Online (Sandbox Code Playgroud) 以下是我想用web sdk在webview中显示的html内容.它只会显示
//请
但是,当我将这个HTML内容放入浏览器时,它会以不同的方式显示.
<br /><br />Read the handouts please for tomorrow.<br /><br /><!--homework help homework
help help with homework homework assignments elementary school high school middle school
// --><font color="#60c000" size="4"><strong>Please!</strong></font>
Run Code Online (Sandbox Code Playgroud)
请建议如何解决此问题
我有另一个问题,在HTML内容中有一个标记
<img src="http://www.homeworknow.com/hwnow/upload/images/tn_star300.gif" border="0" />
Run Code Online (Sandbox Code Playgroud)
在此图像中没有显示.
我正在使用WebView显示嵌入式Youtube视频并且可以在Galaxcy S2(OS 2.3.5)上运行而在Nexus S(OS 2.3.4)上运行,我得到的只是白屏而没有任何视频显示.
这是我正在使用的代码片段和Manifest文件中的声明:
private WebView wv;
private void setWebView()
{
wv = (WebView) findViewById(R.id.webView);
wv.setWebChromeClient(new WebChromeClient());
wv.getSettings().setPluginState(WebSettings.PluginState.ON);
wv.setWebViewClient(new WebViewClient());
wv.getSettings();
wv.setBackgroundColor(0x00000000);
wv.setKeepScreenOn(true);
wv.setHorizontalScrollBarEnabled(false);
wv.setVerticalScrollBarEnabled(false);
wv.getSettings().setBuiltInZoomControls(true);
final String mimeType = "text/html";
final String encoding = "UTF-8";
String html = getHTML();
wv.loadDataWithBaseURL("", html, mimeType, encoding, "");
}
public String getHTML()
{
String html = "<html>"
+ "<head>"
+ "</head>"
+ "<body style=\"border: 0; padding: 0\">"
+ "<iframe "
+ "type=\"text/html\" "
+ "class=\"youtube-player\" "
+ "width= 100%\""
+ "\" …Run Code Online (Sandbox Code Playgroud) android ×10
android-webview ×10
webview ×3
android-4.0-ice-cream-sandwich ×1
apache-flex ×1
caching ×1
cookies ×1
file-upload ×1
html ×1
http ×1
java ×1
youtube ×1