相关疑难解决方法(0)

使用android WebView加载现有的.html文件

我确实尝试过使用Google代码和其他资源的示例,演示WebView,但是当我尝试在我自己的代码中执行此操作时,它对我不起作用.

我想加载myfile.html我放在assets文件夹中,并使用:

private WebView myWebView;

myWebView.loadUrl("file:///android_assets/myfile.html");
Run Code Online (Sandbox Code Playgroud)

在模拟器上显示错误

file:///android_assets/myfile.html无法加载网页:找不到请求的文件. /android_assets/myfile.html

当我把该文件放到文件res/raw/夹并使用:

myWebView.loadUrl("file:///android_res/raw/myfile.html");
Run Code Online (Sandbox Code Playgroud)

然后只有模拟器android 2.2 API级别8可能加载文件,其他旧版本显示相同的错误.我错过了什么吗?

有没有办法在适用于所有API版本的应用程序包中加载现有的.html文件?

android android-assets android-webview

85
推荐指数
4
解决办法
13万
查看次数

适用于Facebook的Android WebView按钮

我正在尝试在Android WebView中使用类似Facebook的功能(项目规范不允许浏览器打开,或任何不在应用程序活动中).

因此,限制是它必须在WebView中完成.我已经设法使它成为一个对话框,并且用户点击按钮,它(WebView)成功(在同一视图中)重定向到facebooks登录页面.身份验证成功后,WebView(在对话框中)将重定向到带有标题的空白页面.

有趣的是,当用户离开空白对话框并再次单击类似按钮时,它的工作方式非常完美(喜欢和不同) - 它以某种方式保持身份验证活动.要解决空白页面,我尝试过/使用过以下内容:

  • 使用WebViewClientshouldOverloadUrlForwarding保持整个过程在同一个WebView对话框中.
  • 使用WebChromeClient正确执行JavaScript -登录后没有它不可能喜欢/不象.
  • 尝试使用setUserAgentString()模拟其他浏览器,如Chrome或Firefox
  • 尝试了SSL错误证书处理(API级别8)(at WebViewClient)

    @Override public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { handler.proceed(); }

  • 使用(以及所有可能的组合)

    webView.getSettings().setAppCacheEnabled(true); webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);

  • 试图坚持使用饼干CookieSyncManager,CookieManager并手动处理.

所有这一切都没有结果.我非常感谢任何帮助!

android facebook webview facebook-like webviewclient

20
推荐指数
1
解决办法
2万
查看次数

onSaveInstanceState和Fragments?

如何获取片段来保存它的状态?我已经尝试了一切,但没有运气,没有任何工作.

我试过添加:

public void onSaveInstanceState(Bundle outState) {
   super.onSaveInstanceState(outState);
   myWebView.saveState(outState);
   Log.w("///////", "onSaveInstanceState");

}
Run Code Online (Sandbox Code Playgroud)

但这永远不会被称为.

有任何想法吗?


我现在正在尝试恢复Web视图的状态:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

     View mainView = (View) inflater.inflate(R.layout.frag_b, container, false);
     myWebView = (WebView) mainView.findViewById(R.id.webviewtest);
     myWebView.setWebViewClient(new MyWebViewClient());
     myWebView.getSettings().setPluginsEnabled(true);
     myWebView.getSettings().setBuiltInZoomControls(false); 
     myWebView.getSettings().setSupportZoom(false);
     myWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);   
     myWebView.getSettings().setAllowFileAccess(true); 
     myWebView.getSettings().setDomStorageEnabled(true);
     myWebView.loadUrl("http://www.google.com");   
     myWebView.setId(1);
     myWebView.restoreState(savedInstanceState);
     Log.w("///////", "onCreateView");

    return mainView;
}
Run Code Online (Sandbox Code Playgroud)

但上述不起作用,任何想法?

android

11
推荐指数
1
解决办法
2万
查看次数

保存/恢复android webview的状态

我有一个简单的webView应用程序,它从我们的网站加载一个页面,其中包含我们的现场人员应该每天访问的位置和电话号码.它提供了启动导航或拨打电话的钩子.从外部活动返回时,应用程序崩溃.点击手机的主页按钮,然后拨打手机,然后返回应用程序工作正常.

这是代码......

更新2 - 不再崩溃,返回时webview为空白

public class VSIMobile_WebView extends Activity {
private static String PROVIDER="gps";
private WebView browser;
private LocationManager myLocationManager=null;
private TelephonyManager myTeleManager = null;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    browser=(WebView)findViewById(R.id.webview);
    myLocationManager=(LocationManager)getSystemService(Context.LOCATION_SERVICE);
    myTeleManager=(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
    browser.getSettings().setJavaScriptEnabled(true);
    browser.addJavascriptInterface(new Locater(), "locater");
    browser.addJavascriptInterface(new JavaScriptInterface(this), "Android");
    if (savedInstanceState!=null){
        browser.restoreState(savedInstanceState);
    }else{ 
        browser.loadUrl("http://zzz.com");
        browser.setWebViewClient(new HelloWebViewClient());
    }
}

public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    }

@Override
public void onSaveInstanceState(Bundle outState) {
    //Toast.makeText(getBaseContext(), browser.getUrl(), Toast.LENGTH_LONG).show();
    browser.saveState(outState);
} 

@Override
protected void onRestoreInstanceState(Bundle state) {
    browser.restoreState(state); …
Run Code Online (Sandbox Code Playgroud)

android webview android-activity

8
推荐指数
1
解决办法
7839
查看次数

防止WebView片段在屏幕旋转时重新加载页面

我知道这已被问过太多次,而且SO充满了类似的问题.我经历了大部分时间,我已经研究了这个问题几天了,我还没有找到明确的解决方案.

我可以轻松避免添加configChanges="orientation|screenSize"到包含WebView的活动中的所有麻烦; 我已经测试了这个并且按预期工作(WebView没有重新加载).但我真的想避免这个解决方案.

这是我当前的WebView实现:

public class BrowserFragment extends Fragment {

    private WebView mWebView;

    public BrowserFragment() {
        // Required empty public constructor
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setRetainInstance(true);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        if (mWebView == null) {
            mWebView = new WebView(getActivity());
        }

        return mWebView;
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        mWebView.setWebViewClient(new WebViewClient() {

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                return super.shouldOverrideUrlLoading(view, url);
            }

        }); …
Run Code Online (Sandbox Code Playgroud)

android webview page-refresh android-fragments

7
推荐指数
1
解决办法
1315
查看次数

如何保存和还原Webview状态?

当我使用备份和还原Webview状态时,我收到此消息:x地址处的网页可能暂时关闭或可能已永久移至新的网址。

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
    super.onSaveInstanceState(savedInstanceState);
    webViewShowPoll.saveState(savedInstanceState);                                    
}

@Override
public void onRestoreInstanceState(Bundle outState) {
  super.onRestoreInstanceState(outState);
    webViewShowPoll.restoreState(outState);
}
Run Code Online (Sandbox Code Playgroud)

和Androidmanifest.xml

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.SET_DEBUG_APP"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />    
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />    


    <activity
        android:name="com.omid.epoll.mobile.Poll"
        android:launchMode="singleInstance"
        android:label="@string/title_activity_poll" 
        android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">
    </activity>
Run Code Online (Sandbox Code Playgroud)

android webview

6
推荐指数
1
解决办法
2万
查看次数

WebView 在方向改变时无法正确调整大小

我正在使用 webview.loadUrl() 将视频 url 加载到 webview 中。播放器是在 html 本身中编码的,因此我只需将 url 加载到 Web 视图中即可。

如果我不在清单中给出 android:configChanges="orientation" ,一切正常。网络视图在方向改变时正确调整大小,并且视频被调整以正确适应屏幕,当然然后视频会重新启动。

因此,我在清单中给出了 android:configChanges="orientation" ,以便视频不会重新加载。现在,虽然视频不会重新加载并继续播放,但视频/网络视图无法正确调整大小,并且如果设备最初为纵向,然后更改为横向,则一半视频会离开屏幕。如果设备最初处于横向模式,然后更改为纵向模式,则仅使用一半的屏幕。

如果您能找到方法或有任何建议,请回复。

android orientation webview

5
推荐指数
1
解决办法
6046
查看次数

Android HTML5视频全屏和旋转

我读了文章 Android WebView:处理方向更改

并按照提示建立一个MainActivity项目

package com.example.testvideo1;

import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.webkit.WebView;
import android.os.Build;

@SuppressLint("NewApi")
public class MainActivity extends ActionBarActivity {

    private VideoEnabledWebView webView;
    private VideoEnabledWebChromeClient webChromeClient;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Set layout
        setContentView(R.layout.activity_main);

        // Save the web view
        webView = (VideoEnabledWebView) findViewById(R.id.webView);

        // Initialize the VideoEnabledWebChromeClient and set event handlers
        View nonVideoLayout = findViewById(R.id.nonVideoLayout);
        // Your own …
Run Code Online (Sandbox Code Playgroud)

video html5 landscape fullscreen

5
推荐指数
1
解决办法
2091
查看次数

android Webview 方向问题,当更改方向时,应用程序重新启动并从头开始显示页面

您好,我面临 Android Webview 方向问题,当更改方向时,应用程序重新启动并从头开始显示页面。我正在阅读不同的答案,但没有解决方案对我有用,这就是为什么我在这里给出我的代码。请任何 Android 开发人员帮助我并告诉我在哪里编辑代码或添加一些东西

package com.example.edarabia;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.Bitmap;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebView;
import android.webkit.WebViewClient;


@SuppressLint("SetJavaScriptEnabled")

public class MainActivity extends Activity{
WebView mywebview;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if(isNetworkConnected() == true){
    setContentView(R.layout.activity_main);
    mywebview = (WebView) findViewById(R.id.webview);       
    mywebview.getSettings().setJavaScriptEnabled(true);
    mywebview.setWebViewClient(new myWebClient());
    mywebview.loadUrl("http://www.grafdom.com/operations/projects/ma/edarabiaapp/");        
    mywebview.getSettings().setBuiltInZoomControls(true);
    mywebview.getSettings().setLoadWithOverviewMode(false);
    mywebview.getSettings().setUseWideViewPort(false);
    }else{
    setContentView(R.layout.splash);    
    showBuyDialog();
    }
}






//  @Override
//    public boolean onKeyDown(int keyCode, KeyEvent event) {
        // Check if …
Run Code Online (Sandbox Code Playgroud)

android orientation webview android-webview

4
推荐指数
1
解决办法
1944
查看次数

从assets文件夹打开HTML文件

我想在我的Android应用程序中打开本地html文件.

该文件位于我的资产文件夹下.所以我正在设置一个WebViewClient并将我的页面加载到其中.但我得到一个"网页不可用"错误.

这是我的活动代码:

public class LocalDialogActivity extends Activity {

    protected WebView webView;
    private static final String ENROLLMENT_URL = "file:///assets/enrollment.html";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_local_dialog);

        webView = (WebView)findViewById(R.id.local_dialog_webview);
        webView.setWebViewClient(new WebViewClient());

        webView.getSettings().setUseWideViewPort(true);
        webView.getSettings().setLoadWithOverviewMode(true);

        webView.getSettings().setSupportZoom(true);
        webView.getSettings().setBuiltInZoomControls(true);
        webView.getSettings().setDisplayZoomControls(false);


        refreshWebView(webView);

    }

    public void refreshWebView(View view) {
        webView.loadUrl(ENROLLMENT_URL);
    }
Run Code Online (Sandbox Code Playgroud)

和布局文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <WebView
        android:id="@+id/local_dialog_webview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

我的AndroidMainfest.xml文件中有互联网权限,可以访问互联网:

<uses-permission android:name="android.permission.INTERNET" />
Run Code Online (Sandbox Code Playgroud)

欢迎任何帮助.谢谢.

android assets webview

1
推荐指数
2
解决办法
1万
查看次数

WebView阻止在RetainInstance片段中重新加载

我在阻止WebView在retainInstance设置为true的片段内时重新加载时遇到问题.

我试过的路线:

SaveInstanceState(由于retainInstance,不会在旋转时传递包)一个自定义包,保存在onSaveInstanceState上并在create中保存保留WebView引用并尝试将其添加回视图层次结构

必须有一个更简单的方法吗?

android fragment webview

0
推荐指数
1
解决办法
1497
查看次数