2015-08-31 4 views
1

В настоящее время я использую WebView в своем приложении для загрузки веб-страницы. Я загрузил следующий URL веб-страницы в WebView:Android - Сохранение данных из WebView

http://domain_name/app/ 

Если пользователь не вошел в систему, то URL перенаправляется на другой URL, который URL входа. здесь URL входа:

http://domain_name/app/index.php?r=site/login 

После пользователя ввести имя пользователя и пароль, он будет перенаправлен на следующий URL:

http://domain_name/app/index.php?r=site/homepage 

Когда пользователь успешно вошел в то домашняя страница показываются пользователю.

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

У меня есть один способ решить эту проблему. Во-первых, чтобы указать URL-адрес страницы входа в систему после успешного входа в систему, я меняю URL-адрес на URL-адрес главной страницы вместо URL-адреса страницы входа в систему.

Есть ли другой способ решить эту проблему или каким-либо образом сохранить данные входа в хранилище приложений?

ответ

2

я отвечаю на мой собственный вопрос, я думал, что это может быть полезным для других.

Наконец я должен решить мою проблему с помощью кэширования на внутреннем и внешнем хранилище (Сохранение данных на внешнее устройство хранения если таковые имеются)

Во-первых, я создал пользовательский Application класс, который создает кэш путь для хранения во внутренней или внешней памяти.

MyApplication.java

import android.app.Application; 
import android.os.Environment; 

import java.io.File; 

public class MyApplication extends Application { 

protected File extStorageAppBasePath; 
protected File extStorageAppCachePath; 

@Override 
public void onCreate() { 
    super.onCreate(); 
    if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) { 
     File externalStorageDir = Environment.getExternalStorageDirectory(); 
     if (externalStorageDir != null) { 
      extStorageAppBasePath = new File(externalStorageDir.getAbsolutePath() + 
        File.separator + "Android" + File.separator + "data" + 
        File.separator + getPackageName()); 
     } 

     if (extStorageAppBasePath != null) { 
      extStorageAppCachePath = new File(extStorageAppBasePath.getAbsolutePath() + 
        File.separator + "cache"); 

      boolean isCachePathAvailable = true; 

      if (!extStorageAppCachePath.exists()) { 
       isCachePathAvailable = extStorageAppCachePath.mkdirs(); 
      } 

      if (!isCachePathAvailable) { 
       extStorageAppCachePath = null; 
      } 
     } 
    } 
} 

@Override 
public File getCacheDir() { 
    if (extStorageAppCachePath != null) { 
     return extStorageAppCachePath; 
    } 
    else { 
     return super.getCacheDir(); 
    } 
} 

}

В Android Manifest файл я дал следующие разрешения и имя приложения под application тега.

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
<application 
     android:name=".MyApplication" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
........................................ 
</application> 

После этого окончательный кеш включения загружается из хранилища, если кеш доступен.

mWebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); 
1

Перед нагрузкой использование страницы:

CookieManager.getInstance().setAcceptCookie(true); 

, если он не будет работать читать о CookieSyncManager для синхронизации браузера печенье магазин в оперативной памяти и постоянного хранения.

Для леденец и выше этого должно быть достаточно:

CookieManager.getInstance().setAcceptThirdPartyCookies(true); 
+0

Я пробовал. но он не работает. Спасибо за помощь – Rajesh

Смежные вопросы