mirror of
https://github.com/whyorean/AuroraStore.git
synced 2026-06-20 13:39:36 -04:00
Issue #130 background download of updates
This commit is contained in:
@@ -19,6 +19,7 @@ public class PreferenceActivity extends android.preference.PreferenceActivity {
|
||||
public static final String PREFERENCE_UI_THEME = "PREFERENCE_UI_THEME";
|
||||
public static final String PREFERENCE_BACKGROUND_UPDATE_INTERVAL = "PREFERENCE_BACKGROUND_UPDATE_INTERVAL";
|
||||
public static final String PREFERENCE_DELETE_APK_AFTER_INSTALL = "PREFERENCE_DELETE_APK_AFTER_INSTALL";
|
||||
public static final String PREFERENCE_BACKGROUND_UPDATE_DOWNLOAD = "PREFERENCE_BACKGROUND_UPDATE_DOWNLOAD";
|
||||
public static final String PREFERENCE_BACKGROUND_UPDATE_INSTALL = "PREFERENCE_BACKGROUND_UPDATE_INSTALL";
|
||||
public static final String PREFERENCE_REQUESTED_LANGUAGE = "PREFERENCE_REQUESTED_LANGUAGE";
|
||||
public static final String PREFERENCE_DEVICE_TO_PRETEND_TO_BE = "PREFERENCE_DEVICE_TO_PRETEND_TO_BE";
|
||||
@@ -74,6 +75,7 @@ public class PreferenceActivity extends android.preference.PreferenceActivity {
|
||||
PreferenceCheckUpdatesFragment checkUpdatesFragment = new PreferenceCheckUpdatesFragment(this);
|
||||
checkUpdatesFragment.setCheckForUpdates((ListPreference) findPreference(PREFERENCE_BACKGROUND_UPDATE_INTERVAL));
|
||||
checkUpdatesFragment.setAlsoInstall((CheckBoxPreference) findPreference(PREFERENCE_BACKGROUND_UPDATE_INSTALL));
|
||||
checkUpdatesFragment.setAlsoDownload((CheckBoxPreference) findPreference(PREFERENCE_BACKGROUND_UPDATE_DOWNLOAD));
|
||||
checkUpdatesFragment.draw();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package com.github.yeriomin.yalpstore;
|
||||
|
||||
import android.Manifest;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.preference.CheckBoxPreference;
|
||||
import android.preference.ListPreference;
|
||||
import android.preference.Preference;
|
||||
@@ -8,6 +10,7 @@ public class PreferenceCheckUpdatesFragment extends PreferenceFragment {
|
||||
|
||||
private ListPreference checkForUpdates;
|
||||
private CheckBoxPreference alsoInstall;
|
||||
private CheckBoxPreference alsoDownload;
|
||||
|
||||
public PreferenceCheckUpdatesFragment(PreferenceActivity activity) {
|
||||
super(activity);
|
||||
@@ -21,6 +24,10 @@ public class PreferenceCheckUpdatesFragment extends PreferenceFragment {
|
||||
this.alsoInstall = alsoInstall;
|
||||
}
|
||||
|
||||
public void setAlsoDownload(CheckBoxPreference alsoDownload) {
|
||||
this.alsoDownload = alsoDownload;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void draw() {
|
||||
checkForUpdates.setSummary(activity.getString(getUpdateSummaryStringId(checkForUpdates.getValue())));
|
||||
@@ -30,20 +37,13 @@ public class PreferenceCheckUpdatesFragment extends PreferenceFragment {
|
||||
int interval = parseInt((String) newValue);
|
||||
UpdateChecker.enable(activity, interval);
|
||||
preference.setSummary(activity.getString(getUpdateSummaryStringId((String) newValue)));
|
||||
alsoDownload.setEnabled(interval != 0);
|
||||
alsoInstall.setEnabled(interval != 0);
|
||||
return true;
|
||||
}
|
||||
});
|
||||
checkForUpdates.getOnPreferenceChangeListener().onPreferenceChange(checkForUpdates, checkForUpdates.getValue());
|
||||
alsoInstall.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
||||
@Override
|
||||
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||
if ((Boolean) newValue) {
|
||||
new CheckSuTask(activity).execute();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
});
|
||||
alsoInstall.setOnPreferenceChangeListener(new AlsoInstallOnPreferenceChangeListener());
|
||||
}
|
||||
|
||||
private int getUpdateSummaryStringId(String intervalString) {
|
||||
@@ -77,4 +77,26 @@ public class PreferenceCheckUpdatesFragment extends PreferenceFragment {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
private class AlsoInstallOnPreferenceChangeListener implements Preference.OnPreferenceChangeListener {
|
||||
|
||||
@Override
|
||||
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||
if ((Boolean) newValue) {
|
||||
if (isPrivileged()) {
|
||||
return true;
|
||||
} else {
|
||||
new CheckSuTask(activity).execute();
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean isPrivileged() {
|
||||
PackageManager pm = activity.getPackageManager();
|
||||
return pm.checkPermission(Manifest.permission.INSTALL_PACKAGES, BuildConfig.APPLICATION_ID) == PackageManager.PERMISSION_GRANTED
|
||||
&& pm.checkPermission(Manifest.permission.DELETE_PACKAGES, BuildConfig.APPLICATION_ID) == PackageManager.PERMISSION_GRANTED
|
||||
;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.github.yeriomin.yalpstore;
|
||||
|
||||
import android.Manifest;
|
||||
import android.app.Activity;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.widget.Toast;
|
||||
|
||||
public class PrivilegeChecker {
|
||||
|
||||
static public boolean check(Activity activity) {
|
||||
PackageManager pm = activity.getPackageManager();
|
||||
boolean privileged = pm.checkPermission(Manifest.permission.INSTALL_PACKAGES, BuildConfig.APPLICATION_ID) == PackageManager.PERMISSION_GRANTED
|
||||
&& pm.checkPermission(Manifest.permission.DELETE_PACKAGES, BuildConfig.APPLICATION_ID) == PackageManager.PERMISSION_GRANTED
|
||||
;
|
||||
if (!privileged) {
|
||||
Toast.makeText(activity, R.string.pref_not_privileged, Toast.LENGTH_LONG).show();
|
||||
}
|
||||
return privileged;
|
||||
}
|
||||
}
|
||||
@@ -48,7 +48,7 @@ public class UpdateChecker extends BroadcastReceiver {
|
||||
if (updatesCount == 0) {
|
||||
return;
|
||||
}
|
||||
if (needToInstallUpdates(context)) {
|
||||
if (PreferenceActivity.getBoolean(context, PreferenceActivity.PREFERENCE_BACKGROUND_UPDATE_DOWNLOAD)) {
|
||||
download(context, updatableApps);
|
||||
} else {
|
||||
createNotification(context, updatesCount);
|
||||
@@ -75,10 +75,6 @@ public class UpdateChecker extends BroadcastReceiver {
|
||||
return task;
|
||||
}
|
||||
|
||||
private boolean needToInstallUpdates(Context context) {
|
||||
return PreferenceActivity.getBoolean(context, PreferenceActivity.PREFERENCE_BACKGROUND_UPDATE_INSTALL);
|
||||
}
|
||||
|
||||
private void createNotification(Context context, int updatesCount) {
|
||||
Intent i = new Intent(context, UpdatableAppsActivity.class);
|
||||
i.setAction(Intent.ACTION_VIEW);
|
||||
|
||||
@@ -147,6 +147,9 @@
|
||||
<string name="pref_background_update_install_summary_off">Только уведомление</string>
|
||||
<string name="pref_background_update_install_summary_on">Обновления устанавливаются (root)</string>
|
||||
<string name="pref_background_update_install">Установить найденные обновления (root)</string>
|
||||
<string name="pref_background_update_download_summary_off">Только уведомление</string>
|
||||
<string name="pref_background_update_download_summary_on">Обновления будут скачаны</string>
|
||||
<string name="pref_background_update_download">Скачать найденные обновления</string>
|
||||
<string name="pref_no_root">Это возможно только на рутованных устройствах</string>
|
||||
<string name="pref_requested_language">Язык запросов к Play Store</string>
|
||||
<string name="pref_requested_language_default">По-умолчанию</string>
|
||||
|
||||
@@ -146,6 +146,9 @@
|
||||
<string name="pref_background_update_install_summary_off">You only get a notification</string>
|
||||
<string name="pref_background_update_install_summary_on">Updates are installed if found (root)</string>
|
||||
<string name="pref_background_update_install">Also install the updates (root)</string>
|
||||
<string name="pref_background_update_download_summary_off">You only get a notification</string>
|
||||
<string name="pref_background_update_download_summary_on">Updates are downloaded if found</string>
|
||||
<string name="pref_background_update_download">Also download the updates</string>
|
||||
<string name="pref_no_root">This option is only available on rooted devices</string>
|
||||
<string name="pref_requested_language">Play Store requests language</string>
|
||||
<string name="pref_requested_language_default">Your default language</string>
|
||||
|
||||
@@ -8,6 +8,13 @@
|
||||
android:entries="@array/updateIntervalLabels"
|
||||
android:entryValues="@array/updateIntervalValues" />
|
||||
<CheckBoxPreference
|
||||
android:defaultValue="false"
|
||||
android:key="PREFERENCE_BACKGROUND_UPDATE_DOWNLOAD"
|
||||
android:summaryOff="@string/pref_background_update_download_summary_off"
|
||||
android:summaryOn="@string/pref_background_update_download_summary_on"
|
||||
android:title="@string/pref_background_update_download" />
|
||||
<CheckBoxPreference
|
||||
android:dependency="PREFERENCE_BACKGROUND_UPDATE_DOWNLOAD"
|
||||
android:defaultValue="false"
|
||||
android:key="PREFERENCE_BACKGROUND_UPDATE_INSTALL"
|
||||
android:summaryOff="@string/pref_background_update_install_summary_off"
|
||||
|
||||
Reference in New Issue
Block a user