2017-05-19 8 views
0

webviewを使用してURLを読み込むアプリがあります。それはログイン機能を持っています。ログイン後、メインページにリダイレクトされます。私のコードは以下の通りです。オリエンテーションでのAndroid WebViewの更新

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

    myWebView = (WebView) findViewById(R.id.webview); 
    WebSettings webSettings = myWebView.getSettings(); 
    webSettings.setJavaScriptEnabled(true); 
    webSettings.setDomStorageEnabled(true); 

    myWebView.setWebViewClient(new WebViewClient()); 
    myWebView.addJavascriptInterface(new JavaScriptInterface(this), "Android"); 

    if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) 
     != PackageManager.PERMISSION_GRANTED) { 

     ActivityCompat.requestPermissions(this, 
      new String[]{Manifest.permission.READ_PHONE_STATE}, 
      MY_PERMISSIONS_REQUEST_READ_PHONE_STATE); 
    } else { 
     loadURL(); 
    } 
} 

@Override 
public void onRequestPermissionsResult(int requestCode, 
             String permissions[], int[] grantResults) { 
    switch (requestCode) { 
     case MY_PERMISSIONS_REQUEST_READ_PHONE_STATE: { 
      if (grantResults.length > 0 
        && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
       loadURL(); 
      } else { 
       ActivityCompat.requestPermissions(this, 
         new String[]{Manifest.permission.READ_PHONE_STATE}, 
         MY_PERMISSIONS_REQUEST_READ_PHONE_STATE); 
      } 
      return; 
     } 
    } 
} 

private void loadURL() { 
    //myWebView.loadUrl("http://192.168.0.198:8080/dashboard/"); 

    myWebView.loadUrl("http://192.168.0.156:8080/dashboard/"); 
} 

以下は私のAndroidManifest.xmlファイルです。

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.tg_david.myapplication"> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:roundIcon="@mipmap/ic_launcher_round" 
    android:supportsRtl="true" 
    android:configChanges="orientation|screenSize" 
    android:theme="@style/AppTheme"> 
    <activity android:name=".MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

あなたが見ることができるように、私はandroid:configChanges="orientation|screenSize"が含まれているが、それはまだ動作しません。 WebViewは、電話機が向きを変えるたびに更新されます。更新すると、ページはログインページにリダイレクトされます。電話機の向きが変わったときにWebViewがセッションをクリアして強制的にページをログアウトすることができますか?

答えて

0

あなたがする必要があるのは、onSaveInstanceStateとonRestoreInstanceStateをオーバーライドするだけです。

@Override 
protected void onSaveInstanceState(Bundle outState){ 
    super.onSaveInstanceState(outState); 
    mWebView.saveState(outState); 
} 

@Override 
protected void onRestoreInstanceState(Bundle savedInstanceState){ 
    super.onRestoreInstanceState(savedInstanceState); 
    mWebView.restoreState(savedInstanceState); 
} 

と一つの他の解決策は、いや、まだ動作しません

android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" 

1.Your question is already answered here

2.Here is one tutorial

+0

にマニフェストであなたのアクティビティタグを更新する可能性があります。私は2つのオーバーライドを追加し、私のマニフェストも変更しました。常にリフレッシュされ、再ログインするように強制されました。 –

関連する問題