465 lines
13 KiB
Java
465 lines
13 KiB
Java
/*
|
|
* Copyright 2014 A.C.R. Development
|
|
*/
|
|
package acr.browser.lightning;
|
|
|
|
import android.app.AlertDialog;
|
|
import android.content.Context;
|
|
import android.content.DialogInterface;
|
|
import android.content.SharedPreferences;
|
|
import android.os.Build;
|
|
import android.os.Bundle;
|
|
import android.os.Handler;
|
|
import android.os.Message;
|
|
import android.provider.Browser;
|
|
import android.support.v7.app.ActionBarActivity;
|
|
import android.support.v7.widget.Toolbar;
|
|
import android.view.MenuItem;
|
|
import android.view.View;
|
|
import android.view.View.OnClickListener;
|
|
import android.view.WindowManager;
|
|
import android.webkit.*;
|
|
import android.widget.CheckBox;
|
|
import android.widget.CompoundButton;
|
|
import android.widget.CompoundButton.OnCheckedChangeListener;
|
|
import android.widget.RelativeLayout;
|
|
import android.widget.TextView;
|
|
|
|
public class PrivacySettingsActivity extends ActionBarActivity {
|
|
|
|
// mPreferences variables
|
|
private static final int API = android.os.Build.VERSION.SDK_INT;
|
|
private SharedPreferences mPreferences;
|
|
private SharedPreferences.Editor mEditPrefs;
|
|
private CheckBox cbLocation, cbSavePasswords, cbClearCacheExit, cbClearHistoryExit,
|
|
cbClearCookiesExit, cbThirdParty;
|
|
private Context mContext;
|
|
private boolean mSystemBrowser;
|
|
private Handler messageHandler;
|
|
|
|
@Override
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
super.onCreate(savedInstanceState);
|
|
setContentView(R.layout.privacy_settings);
|
|
|
|
// set up ActionBar
|
|
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
|
|
setSupportActionBar(toolbar);
|
|
|
|
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
|
|
|
mPreferences = getSharedPreferences(PreferenceConstants.PREFERENCES, 0);
|
|
if (mPreferences.getBoolean(PreferenceConstants.HIDE_STATUS_BAR, false)) {
|
|
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
|
|
WindowManager.LayoutParams.FLAG_FULLSCREEN);
|
|
}
|
|
|
|
// TODO WARNING: SharedPreferences.edit() without a corresponding
|
|
// commit() or apply() call
|
|
mEditPrefs = mPreferences.edit();
|
|
|
|
mSystemBrowser = mPreferences.getBoolean(PreferenceConstants.SYSTEM_BROWSER_PRESENT, false);
|
|
mContext = this;
|
|
initialize();
|
|
}
|
|
|
|
@Override
|
|
public boolean onOptionsItemSelected(MenuItem item) {
|
|
finish();
|
|
return true;
|
|
}
|
|
|
|
private void initialize() {
|
|
|
|
RelativeLayout rLocation, rSavePasswords, rClearCacheExit, rClearHistoryExit, rClearCookiesExit, rClearCache, rClearHistory, rClearCookies, rThirdParty;
|
|
|
|
rLocation = (RelativeLayout) findViewById(R.id.rLocation);
|
|
rSavePasswords = (RelativeLayout) findViewById(R.id.rSavePasswords);
|
|
rClearCacheExit = (RelativeLayout) findViewById(R.id.rClearCacheExit);
|
|
rClearHistoryExit = (RelativeLayout) findViewById(R.id.rClearHistoryExit);
|
|
rClearCookiesExit = (RelativeLayout) findViewById(R.id.rClearCookiesExit);
|
|
rClearCache = (RelativeLayout) findViewById(R.id.rClearCache);
|
|
rClearHistory = (RelativeLayout) findViewById(R.id.rClearHistory);
|
|
rClearCookies = (RelativeLayout) findViewById(R.id.rClearCookies);
|
|
rThirdParty = (RelativeLayout) findViewById(R.id.rThirdParty);
|
|
|
|
cbLocation = (CheckBox) findViewById(R.id.cbLocation);
|
|
cbSavePasswords = (CheckBox) findViewById(R.id.cbSavePasswords);
|
|
cbClearCacheExit = (CheckBox) findViewById(R.id.cbClearCacheExit);
|
|
cbClearHistoryExit = (CheckBox) findViewById(R.id.cbClearHistoryExit);
|
|
cbClearCookiesExit = (CheckBox) findViewById(R.id.cbClearCookiesExit);
|
|
cbThirdParty = (CheckBox) findViewById(R.id.cbThirdParty);
|
|
|
|
cbLocation.setChecked(mPreferences.getBoolean(PreferenceConstants.LOCATION, false));
|
|
cbSavePasswords.setChecked(mPreferences
|
|
.getBoolean(PreferenceConstants.SAVE_PASSWORDS, true));
|
|
cbClearCacheExit.setChecked(mPreferences.getBoolean(PreferenceConstants.CLEAR_CACHE_EXIT,
|
|
false));
|
|
cbClearHistoryExit.setChecked(mPreferences.getBoolean(
|
|
PreferenceConstants.CLEAR_HISTORY_EXIT, false));
|
|
cbClearCookiesExit.setChecked(mPreferences.getBoolean(
|
|
PreferenceConstants.CLEAR_COOKIES_EXIT, false));
|
|
cbThirdParty.setChecked(mPreferences.getBoolean(PreferenceConstants.BLOCK_THIRD_PARTY,
|
|
false));
|
|
|
|
cbThirdParty.setEnabled(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP);
|
|
|
|
rLocation(rLocation);
|
|
rSavePasswords(rSavePasswords);
|
|
rClearCacheExit(rClearCacheExit);
|
|
rClearHistoryExit(rClearHistoryExit);
|
|
rClearCookiesExit(rClearCookiesExit);
|
|
rClearCache(rClearCache);
|
|
rClearHistory(rClearHistory);
|
|
rClearCookies(rClearCookies);
|
|
rThirdParty(rThirdParty);
|
|
cbLocation(cbLocation);
|
|
cbSavePasswords(cbSavePasswords);
|
|
cbClearCacheExit(cbClearCacheExit);
|
|
cbClearHistoryExit(cbClearHistoryExit);
|
|
cbClearCookiesExit(cbClearCookiesExit);
|
|
cbThirdParty(cbThirdParty);
|
|
|
|
TextView syncHistory = (TextView) findViewById(R.id.isBrowserAvailable);
|
|
|
|
RelativeLayout layoutSyncHistory = (RelativeLayout) findViewById(R.id.rBrowserHistory);
|
|
final CheckBox cbSyncHistory = (CheckBox) findViewById(R.id.cbBrowserHistory);
|
|
layoutSyncHistory.setOnClickListener(new OnClickListener() {
|
|
|
|
@Override
|
|
public void onClick(View v) {
|
|
cbSyncHistory.setChecked(!cbSyncHistory.isChecked());
|
|
}
|
|
|
|
});
|
|
cbSyncHistory.setOnCheckedChangeListener(new OnCheckedChangeListener() {
|
|
|
|
@Override
|
|
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
|
mEditPrefs.putBoolean(PreferenceConstants.SYNC_HISTORY, isChecked).apply();
|
|
}
|
|
|
|
});
|
|
|
|
if (!mSystemBrowser) {
|
|
cbSyncHistory.setChecked(false);
|
|
cbSyncHistory.setEnabled(false);
|
|
syncHistory.setText(getResources().getString(R.string.stock_browser_unavailable));
|
|
} else {
|
|
cbSyncHistory.setEnabled(true);
|
|
cbSyncHistory.setChecked(mPreferences
|
|
.getBoolean(PreferenceConstants.SYNC_HISTORY, true));
|
|
syncHistory.setText(getResources().getString(R.string.stock_browser_available));
|
|
}
|
|
|
|
messageHandler = new MessageHandler(mContext);
|
|
}
|
|
|
|
private static class MessageHandler extends Handler {
|
|
|
|
Context mHandlerContext;
|
|
|
|
public MessageHandler(Context context) {
|
|
this.mHandlerContext = context;
|
|
}
|
|
|
|
@Override
|
|
public void handleMessage(Message msg) {
|
|
switch (msg.what) {
|
|
case 1:
|
|
Utils.showToast(mHandlerContext,
|
|
mHandlerContext.getResources()
|
|
.getString(R.string.message_clear_history));
|
|
break;
|
|
case 2:
|
|
Utils.showToast(
|
|
mHandlerContext,
|
|
mHandlerContext.getResources().getString(
|
|
R.string.message_cookies_cleared));
|
|
break;
|
|
}
|
|
super.handleMessage(msg);
|
|
}
|
|
}
|
|
|
|
private void cbLocation(CheckBox view) {
|
|
view.setOnCheckedChangeListener(new OnCheckedChangeListener() {
|
|
|
|
@Override
|
|
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
|
mEditPrefs.putBoolean(PreferenceConstants.LOCATION, isChecked);
|
|
mEditPrefs.apply();
|
|
}
|
|
|
|
});
|
|
}
|
|
|
|
private void cbSavePasswords(CheckBox view) {
|
|
view.setOnCheckedChangeListener(new OnCheckedChangeListener() {
|
|
|
|
@Override
|
|
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
|
mEditPrefs.putBoolean(PreferenceConstants.SAVE_PASSWORDS, isChecked);
|
|
mEditPrefs.apply();
|
|
}
|
|
|
|
});
|
|
}
|
|
|
|
private void cbClearCacheExit(CheckBox view) {
|
|
view.setOnCheckedChangeListener(new OnCheckedChangeListener() {
|
|
|
|
@Override
|
|
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
|
mEditPrefs.putBoolean(PreferenceConstants.CLEAR_CACHE_EXIT, isChecked);
|
|
mEditPrefs.apply();
|
|
}
|
|
|
|
});
|
|
}
|
|
|
|
private void cbClearHistoryExit(CheckBox view) {
|
|
view.setOnCheckedChangeListener(new OnCheckedChangeListener() {
|
|
|
|
@Override
|
|
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
|
mEditPrefs.putBoolean(PreferenceConstants.CLEAR_HISTORY_EXIT, isChecked);
|
|
mEditPrefs.apply();
|
|
}
|
|
|
|
});
|
|
}
|
|
|
|
private void cbThirdParty(CheckBox view) {
|
|
view.setOnCheckedChangeListener(new OnCheckedChangeListener() {
|
|
|
|
@Override
|
|
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
|
mEditPrefs.putBoolean(PreferenceConstants.BLOCK_THIRD_PARTY, isChecked);
|
|
mEditPrefs.apply();
|
|
}
|
|
|
|
});
|
|
}
|
|
|
|
private void cbClearCookiesExit(CheckBox view) {
|
|
view.setOnCheckedChangeListener(new OnCheckedChangeListener() {
|
|
|
|
@Override
|
|
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
|
mEditPrefs.putBoolean(PreferenceConstants.CLEAR_COOKIES_EXIT, isChecked);
|
|
mEditPrefs.apply();
|
|
}
|
|
|
|
});
|
|
}
|
|
|
|
private void rLocation(RelativeLayout view) {
|
|
view.setOnClickListener(new OnClickListener() {
|
|
|
|
@Override
|
|
public void onClick(View v) {
|
|
// TODO Auto-generated method stub
|
|
cbLocation.setChecked(!cbLocation.isChecked());
|
|
}
|
|
|
|
});
|
|
}
|
|
|
|
private void rSavePasswords(RelativeLayout view) {
|
|
view.setOnClickListener(new OnClickListener() {
|
|
|
|
@Override
|
|
public void onClick(View v) {
|
|
// TODO Auto-generated method stub
|
|
cbSavePasswords.setChecked(!cbSavePasswords.isChecked());
|
|
}
|
|
|
|
});
|
|
}
|
|
|
|
private void rClearCacheExit(RelativeLayout view) {
|
|
view.setOnClickListener(new OnClickListener() {
|
|
|
|
@Override
|
|
public void onClick(View v) {
|
|
// TODO Auto-generated method stub
|
|
cbClearCacheExit.setChecked(!cbClearCacheExit.isChecked());
|
|
}
|
|
|
|
});
|
|
}
|
|
|
|
private void rThirdParty(RelativeLayout view) {
|
|
view.setOnClickListener(new OnClickListener() {
|
|
|
|
@Override
|
|
public void onClick(View v) {
|
|
// TODO Auto-generated method stub
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
|
cbThirdParty.setChecked(!cbThirdParty.isChecked());
|
|
} else {
|
|
Utils.showToast(mContext, mContext.getString(R.string.available_lollipop));
|
|
}
|
|
}
|
|
|
|
});
|
|
}
|
|
|
|
private void rClearHistoryExit(RelativeLayout view) {
|
|
view.setOnClickListener(new OnClickListener() {
|
|
|
|
@Override
|
|
public void onClick(View v) {
|
|
// TODO Auto-generated method stub
|
|
cbClearHistoryExit.setChecked(!cbClearHistoryExit.isChecked());
|
|
}
|
|
|
|
});
|
|
}
|
|
|
|
private void rClearCookiesExit(RelativeLayout view) {
|
|
view.setOnClickListener(new OnClickListener() {
|
|
|
|
@Override
|
|
public void onClick(View v) {
|
|
// TODO Auto-generated method stub
|
|
cbClearCookiesExit.setChecked(!cbClearCookiesExit.isChecked());
|
|
}
|
|
|
|
});
|
|
}
|
|
|
|
private void rClearHistory(RelativeLayout view) {
|
|
view.setOnClickListener(new OnClickListener() {
|
|
|
|
@Override
|
|
public void onClick(View v) {
|
|
AlertDialog.Builder builder = new AlertDialog.Builder(PrivacySettingsActivity.this); // dialog
|
|
builder.setTitle(getResources().getString(R.string.title_clear_history));
|
|
builder.setMessage(getResources().getString(R.string.dialog_history))
|
|
.setPositiveButton(getResources().getString(R.string.action_yes),
|
|
new DialogInterface.OnClickListener() {
|
|
|
|
@Override
|
|
public void onClick(DialogInterface arg0, int arg1) {
|
|
Thread clear = new Thread(new Runnable() {
|
|
|
|
@Override
|
|
public void run() {
|
|
clearHistory();
|
|
}
|
|
|
|
});
|
|
clear.start();
|
|
}
|
|
|
|
})
|
|
.setNegativeButton(getResources().getString(R.string.action_no),
|
|
new DialogInterface.OnClickListener() {
|
|
|
|
@Override
|
|
public void onClick(DialogInterface arg0, int arg1) {
|
|
// TODO Auto-generated method stub
|
|
|
|
}
|
|
|
|
}).show();
|
|
}
|
|
|
|
});
|
|
}
|
|
|
|
private void rClearCookies(RelativeLayout view) {
|
|
view.setOnClickListener(new OnClickListener() {
|
|
|
|
@Override
|
|
public void onClick(View v) {
|
|
AlertDialog.Builder builder = new AlertDialog.Builder(PrivacySettingsActivity.this); // dialog
|
|
builder.setTitle(getResources().getString(R.string.title_clear_cookies));
|
|
builder.setMessage(getResources().getString(R.string.dialog_cookies))
|
|
.setPositiveButton(getResources().getString(R.string.action_yes),
|
|
new DialogInterface.OnClickListener() {
|
|
|
|
@Override
|
|
public void onClick(DialogInterface arg0, int arg1) {
|
|
Thread clear = new Thread(new Runnable() {
|
|
|
|
@Override
|
|
public void run() {
|
|
clearCookies();
|
|
}
|
|
|
|
});
|
|
clear.start();
|
|
}
|
|
|
|
})
|
|
.setNegativeButton(getResources().getString(R.string.action_no),
|
|
new DialogInterface.OnClickListener() {
|
|
|
|
@Override
|
|
public void onClick(DialogInterface arg0, int arg1) {
|
|
|
|
}
|
|
|
|
}).show();
|
|
}
|
|
|
|
});
|
|
}
|
|
|
|
private void rClearCache(RelativeLayout view) {
|
|
view.setOnClickListener(new OnClickListener() {
|
|
|
|
@Override
|
|
public void onClick(View v) {
|
|
// TODO Auto-generated method stub
|
|
clearCache();
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
public void clearCache() {
|
|
WebView webView = new WebView(this);
|
|
webView.clearCache(true);
|
|
webView.destroy();
|
|
Utils.showToast(mContext, getResources().getString(R.string.message_cache_cleared));
|
|
}
|
|
|
|
@SuppressWarnings("deprecation")
|
|
public void clearHistory() {
|
|
deleteDatabase(HistoryDatabaseHandler.DATABASE_NAME);
|
|
WebViewDatabase m = WebViewDatabase.getInstance(this);
|
|
m.clearFormData();
|
|
m.clearHttpAuthUsernamePassword();
|
|
if (API < 18) {
|
|
m.clearUsernamePassword();
|
|
WebIconDatabase.getInstance().removeAllIcons();
|
|
}
|
|
if (mSystemBrowser) {
|
|
try {
|
|
Browser.clearHistory(getContentResolver());
|
|
} catch (Exception ignored) {
|
|
}
|
|
}
|
|
Utils.trimCache(this);
|
|
messageHandler.sendEmptyMessage(1);
|
|
}
|
|
|
|
@SuppressWarnings("deprecation")
|
|
public void clearCookies() {
|
|
CookieManager c = CookieManager.getInstance();
|
|
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
|
c.removeAllCookies(null);
|
|
} else {
|
|
CookieSyncManager.createInstance(this);
|
|
c.removeAllCookie();
|
|
}
|
|
messageHandler.sendEmptyMessage(2);
|
|
}
|
|
}
|