Warn user about downloading update package via mobile data
Based on: 8928492535
This commit is contained in:
13
res/layout/checkbox_view.xml
Normal file
13
res/layout/checkbox_view.xml
Normal file
@@ -0,0 +1,13 @@
|
||||
<FrameLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingEnd="16dp"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingTop="16dp">
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/checkbox"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
</FrameLayout>
|
||||
@@ -17,4 +17,9 @@
|
||||
android:checkable="true"
|
||||
android:title="@string/menu_auto_delete_updates"
|
||||
app:showAsAction="never" />
|
||||
<item
|
||||
android:id="@+id/menu_mobile_data_warning"
|
||||
android:checkable="true"
|
||||
android:title="@string/menu_mobile_data_warning"
|
||||
app:showAsAction="never" />
|
||||
</menu>
|
||||
|
||||
@@ -115,4 +115,9 @@
|
||||
<item quantity="one">1 hour</item>
|
||||
<item quantity="other"><xliff:g id="count">%d</xliff:g> hours</item>
|
||||
</plurals>
|
||||
|
||||
<string name="update_on_mobile_data_title">Warning</string>
|
||||
<string name="update_on_mobile_data_message">You\'re about to download an update package using mobile data which is likely going to cause high data usage. Would you like to proceed?</string>
|
||||
<string name="checkbox_mobile_data_warning">Do not show again</string>
|
||||
<string name="menu_mobile_data_warning">Mobile data warning</string>
|
||||
</resources>
|
||||
|
||||
@@ -180,6 +180,8 @@ public class UpdatesActivity extends UpdatesListActivity {
|
||||
.setChecked(preferences.getBoolean(Constants.PREF_AUTO_UPDATES_CHECK, true));
|
||||
menu.findItem(R.id.menu_auto_delete_updates)
|
||||
.setChecked(preferences.getBoolean(Constants.PREF_AUTO_DELETE_UPDATES, false));
|
||||
menu.findItem(R.id.menu_mobile_data_warning)
|
||||
.setChecked(preferences.getBoolean(Constants.PREF_MOBILE_DATA_WARNING, true));
|
||||
return super.onCreateOptionsMenu(menu);
|
||||
}
|
||||
|
||||
@@ -214,6 +216,15 @@ public class UpdatesActivity extends UpdatesListActivity {
|
||||
.apply();
|
||||
return true;
|
||||
}
|
||||
case R.id.menu_mobile_data_warning: {
|
||||
boolean enable = !item.isChecked();
|
||||
item.setChecked(enable);
|
||||
PreferenceManager.getDefaultSharedPreferences(UpdatesActivity.this)
|
||||
.edit()
|
||||
.putBoolean(Constants.PREF_MOBILE_DATA_WARNING, enable)
|
||||
.apply();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
package org.lineageos.updater;
|
||||
|
||||
import android.content.DialogInterface;
|
||||
import android.content.SharedPreferences;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.support.design.widget.Snackbar;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.support.v7.view.ActionMode;
|
||||
@@ -29,12 +31,14 @@ import android.view.MenuInflater;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.ImageButton;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.TextView;
|
||||
|
||||
import org.lineageos.updater.controller.Controller;
|
||||
import org.lineageos.updater.misc.BuildInfoUtils;
|
||||
import org.lineageos.updater.misc.Constants;
|
||||
import org.lineageos.updater.misc.FileUtils;
|
||||
import org.lineageos.updater.misc.PermissionsUtils;
|
||||
import org.lineageos.updater.misc.StringGenerator;
|
||||
@@ -252,6 +256,39 @@ public class UpdatesListAdapter extends RecyclerView.Adapter<UpdatesListAdapter.
|
||||
notifyItemRangeChanged(position, getItemCount());
|
||||
}
|
||||
|
||||
private void startDownloadWithWarning(final String downloadId) {
|
||||
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(mActivity);
|
||||
boolean warn = preferences.getBoolean(Constants.PREF_MOBILE_DATA_WARNING, true);
|
||||
if (Utils.isOnWifiOrEthernet(mActivity) || !warn) {
|
||||
mUpdaterController.startDownload(downloadId);
|
||||
return;
|
||||
}
|
||||
|
||||
View checkboxView = LayoutInflater.from(mActivity).inflate(R.layout.checkbox_view, null);
|
||||
CheckBox checkbox = (CheckBox) checkboxView.findViewById(R.id.checkbox);
|
||||
checkbox.setText(R.string.checkbox_mobile_data_warning);
|
||||
|
||||
new AlertDialog.Builder(mActivity)
|
||||
.setTitle(R.string.update_on_mobile_data_title)
|
||||
.setMessage(R.string.update_on_mobile_data_message)
|
||||
.setView(checkboxView)
|
||||
.setPositiveButton(R.string.action_description_download,
|
||||
new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
if (checkbox.isChecked()) {
|
||||
preferences.edit()
|
||||
.putBoolean(Constants.PREF_MOBILE_DATA_WARNING, false)
|
||||
.apply();
|
||||
mActivity.supportInvalidateOptionsMenu();
|
||||
}
|
||||
mUpdaterController.startDownload(downloadId);
|
||||
}
|
||||
})
|
||||
.setNegativeButton(android.R.string.cancel, null)
|
||||
.show();
|
||||
}
|
||||
|
||||
private void setButtonAction(ImageButton button, Action action, final String downloadId,
|
||||
boolean enabled) {
|
||||
final View.OnClickListener clickListener;
|
||||
@@ -264,7 +301,7 @@ public class UpdatesListAdapter extends RecyclerView.Adapter<UpdatesListAdapter.
|
||||
clickListener = !enabled ? null : new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
mUpdaterController.startDownload(downloadId);
|
||||
startDownloadWithWarning(downloadId);
|
||||
}
|
||||
};
|
||||
break;
|
||||
|
||||
@@ -26,6 +26,7 @@ public final class Constants {
|
||||
public static final String PREF_LAST_UPDATE_CHECK = "last_update_check";
|
||||
public static final String PREF_AUTO_UPDATES_CHECK = "auto_updates_check";
|
||||
public static final String PREF_AUTO_DELETE_UPDATES = "auto_delete_updates";
|
||||
public static final String PREF_MOBILE_DATA_WARNING = "pref_mobile_data_warning";
|
||||
|
||||
public static final String UNCRYPT_FILE_EXT = ".uncrypt";
|
||||
|
||||
|
||||
@@ -167,6 +167,14 @@ public class Utils {
|
||||
return !(info == null || !info.isConnected() || !info.isAvailable());
|
||||
}
|
||||
|
||||
public static boolean isOnWifiOrEthernet(Context context) {
|
||||
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(
|
||||
Context.CONNECTIVITY_SERVICE);
|
||||
NetworkInfo info = cm.getActiveNetworkInfo();
|
||||
return (info != null && (info.getType() == ConnectivityManager.TYPE_ETHERNET
|
||||
|| info.getType() == ConnectivityManager.TYPE_WIFI));
|
||||
}
|
||||
|
||||
/**
|
||||
* Compares two json formatted updates list files
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user