2016-11-15 2 views
1

Я пытаюсь реализовать пример компаса Full-Tilt (https://github.com/adtile/Full-Tilt) (https://richtr.github.io/Marine-Compass) в WebView.Android WebView сохраняет последнее положение компаса после перезапуска приложения вместо сброса

Моя проблема в том, что при перезагрузке приложения после его закрытия (путем прокрутки или многозадачности ...) северное положение для компаса не сбрасывается, а последняя позиция сохраняется.

Как воспроизвести:

  1. запуска приложения: например, север находится сверху (морской компас не точку на север в ссылке Это только пример.)
  2. повернуть телефон, чтобы указать в другом месте, например, на юге.
  3. закрыть приложение (по многозадачности, прикосновением или менеджер задач, ...)
  4. повернуть снова ваш телефон, чтобы указать на другое место, например, West
  5. повторного запуска приложения: точку компаса к последней позиции , Юг для этого пример. Вместо сброса и указания на реальную позицию. Запад в наш пример.

Я стараюсь найти множество решений на форумах, но ничего не работает. Как

  • ClearView()
  • clearHistory()
  • уничтожить()
  • ClearCache()
  • clearFormData()
  • ясно печенье
  • setCacheMode (WebSettings.LOAD_NO_CACHE)
  • setDomStorageEnabled (false)
  • setAppCacheEnabled (ложь)
  • loadUrl ("О: пустой")

есть кто-нибудь идеи, чтобы решить этот вопрос?

Найдите ниже примере кода ...

MainActivity.java:

public class MainActivity extends AppCompatActivity { 

//fields 
private final String mViewUrl = "https://richtr.github.io/Marine-Compass"; 

private WebView mWebView; 


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

    mWebView = ((WebView) findViewById(R.id.testView)); 
    mWebView.loadUrl("about:blank"); 
    String userAgent = "Mozilla/5.0 (Linux; Android 6.0; Android SDK built for x86 Build/MASTER; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/44.0.2403.119 Mobile Safari/537.36"; 
    mWebView.getSettings().setUserAgentString(userAgent); 
    mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); 
    mWebView.getSettings().setAppCacheEnabled(false); 
    mWebView.getSettings().setDomStorageEnabled(false); 
    mWebView.clearFormData(); 
    mWebView.clearHistory(); 
    mWebView.clearCache(true); 
    this.clearCookies(this); 
    mWebView.getSettings().setJavaScriptEnabled(true); 
    mWebView.setWebViewClient(new WebViewClient()); 
    mWebView.loadUrl(mViewUrl); 

} 

@SuppressWarnings("deprecation") 
public static void clearCookies(Context context) 
{ 

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) { 
     CookieManager.getInstance().removeAllCookies(null); 
     CookieManager.getInstance().flush(); 
    } else 
    { 
     CookieSyncManager cookieSyncMngr=CookieSyncManager.createInstance(context); 
     cookieSyncMngr.startSync(); 
     CookieManager cookieManager=CookieManager.getInstance(); 
     cookieManager.removeAllCookie(); 
     cookieManager.removeSessionCookie(); 
     cookieSyncMngr.stopSync(); 
     cookieSyncMngr.sync(); 
    } 
} 
} 

AndroidManifest.xml:

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

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    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> 

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/activity_main" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.kedros.test.MainActivity"> 

<WebView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/testView" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
/> 

+0

Вам нужно очистить данные программно увидеть здесь: http://stackoverflow.com/questions/6134103/clear- application-data-programatically –

+0

Спасибо, но где вызвать метод clearApplicationData?Невозможно поймать событие, если пользователь закрывает приложение из многозадачности, салфетки. Приложение просто остановилось без каких-либо событий. –

ответ

0

вызов его в OnStop() и положить OnCreate код в onResume() метод

+0

Привет, Najeeb, я пытаюсь вызвать метод для очистки данных в методе onStop() (я использую этот метод из этой ссылки https://www.hrupin.com/2011/11/how-to-clear-user-data-in -your-android-application-programatically), и создайте код в onResume(), но не сработает. Без изменений. –