Skip to content

Commit 8392bb9

Browse files
author
Kevin Abraham
committed
Add option to override OTA server
1 parent 2526b42 commit 8392bb9

5 files changed

Lines changed: 54 additions & 17 deletions

File tree

app/src/main/java/org/efidroid/efidroidmanager/AppConstants.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,25 @@ public final class AppConstants {
1919
public static final String PATH_INTERNAL_FSTAB = "fstab.multiboot";
2020

2121
private static String getUrlServer(Context context) {
22-
String url = SystemPropertiesProxy.get(context, "efidroid.server_url", "");
22+
String url = getUrlServerConfig(context);
2323
if (TextUtils.isEmpty(url))
2424
url = URL_EFIDROID_SERVER;
2525

2626
return url;
2727
}
2828

29+
public static String getUrlServerConfig(Context context) {
30+
String url = SystemPropertiesProxy.get(context, "efidroid.server_url", "");
31+
if (TextUtils.isEmpty(url))
32+
url = SystemPropertiesProxy.get(context, "persist.efidroid.server_url", "");
33+
34+
return url;
35+
}
36+
37+
public static void setUrlServerConfig(Context context, String serverUrl) {
38+
SystemPropertiesProxy.set(context, "persist.efidroid.server_url", serverUrl);
39+
}
40+
2941
public static String getUrlOta(Context context) {
3042
return getUrlServer(context) + "/ota/master";
3143
}

app/src/main/java/org/efidroid/efidroidmanager/activities/MainActivity.java

Lines changed: 30 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import com.afollestad.materialdialogs.MaterialDialog;
2929
import com.melnykov.fab.FloatingActionButton;
3030

31+
import org.efidroid.efidroidmanager.AppConstants;
3132
import org.efidroid.efidroidmanager.DataHelper;
3233
import org.efidroid.efidroidmanager.R;
3334
import org.efidroid.efidroidmanager.RootToolsEx;
@@ -49,21 +50,20 @@ public class MainActivity extends AppCompatActivity
4950
OperatingSystemFragment.OnOperatingSystemFragmentInteractionListener,
5051
DataHelper.DeviceInfoLoadCallback, InstallFragment.OnInstallFragmentInteractionListener {
5152

53+
// args
54+
private static final String ARG_DEVICE_INFO = "deviceinfo";
55+
private static final String ARG_ACTIVEMENU_ID = "activemenu_id";
56+
private static final String ARG_HAS_ROOT = "has_root";
57+
private static final String ARG_OPERATING_SYSTEMS = "operating_systems";
58+
private static final String ARG_INSTALL_STATUS = "install_status";
5259
// status
5360
private boolean hasRoot = false;
5461
private boolean mTouchDisabled = false;
5562
private int mActiveMenuItemId = 0;
5663
private MenuItem mPreviousMenuItem;
5764
private AsyncTask<?, ?, ?> mFragmentLoadingTask = null;
58-
5965
// data
6066
private DeviceInfo mDeviceInfo = null;
61-
62-
// args
63-
private static final String ARG_DEVICE_INFO = "deviceinfo";
64-
private static final String ARG_ACTIVEMENU_ID = "activemenu_id";
65-
private static final String ARG_HAS_ROOT = "has_root";
66-
6767
// UI
6868
private NavigationView mNavigationView;
6969
private FloatingActionButton mFab;
@@ -75,10 +75,10 @@ public class MainActivity extends AppCompatActivity
7575
private CollapsingToolbarLayout mCollapsingToolbarLayout;
7676
private AppBarLayout mAppBarLayout;
7777
private FrameLayout mToolbarFrameLayout;
78-
7978
// operating systems
8079
private ArrayList<OperatingSystem> mOperatingSystems;
81-
private static final String ARG_OPERATING_SYSTEMS = "operating_systems";
80+
// installation
81+
private InstallationStatus mInstallStatus = null;
8282

8383
private AsyncTask<Void, Void, Exception> makeOperatingSystemsTask() {
8484
final ArrayList<OperatingSystem> list = new ArrayList<>();
@@ -158,10 +158,6 @@ protected void onPostExecute(Exception e) {
158158
};
159159
}
160160

161-
// installation
162-
private InstallationStatus mInstallStatus = null;
163-
private static final String ARG_INSTALL_STATUS = "install_status";
164-
165161
private AsyncTask<Void, Void, Exception> makeInstallationStatusTask(final InstallFragment.InstallStatusLoadCallback callback) {
166162
final InstallationStatus installStatus = new InstallationStatus();
167163

@@ -286,15 +282,31 @@ public void onDeviceInfoLoadError(Exception e) {
286282
new MaterialDialog.Builder(this)
287283
.title(R.string.error)
288284
.content(getString(R.string.cant_load_device_info_check_connection) + e.getLocalizedMessage())
289-
.positiveText(R.string.try_again)
285+
.positiveText(R.string.try_again).neutralText(R.string.override_ota_server)
290286
.cancelable(false).onPositive(new MaterialDialog.SingleButtonCallback() {
291287
@Override
292288
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
293289
DataHelper.loadDeviceInfo(MainActivity.this, MainActivity.this);
294290
}
291+
}).onNeutral(new MaterialDialog.SingleButtonCallback() {
292+
@Override
293+
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
294+
showOverrideOTAServerDialog();
295+
}
295296
}).show();
296297
}
297298

299+
public void showOverrideOTAServerDialog() {
300+
new MaterialDialog.Builder(MainActivity.this).title(R.string.override_ota_server)
301+
.input(null, AppConstants.getUrlServerConfig(MainActivity.this), new MaterialDialog.InputCallback() {
302+
@Override
303+
public void onInput(@NonNull MaterialDialog dialog, CharSequence input) {
304+
AppConstants.setUrlServerConfig(MainActivity.this, input.toString());
305+
DataHelper.loadDeviceInfo(MainActivity.this, MainActivity.this);
306+
}
307+
}).show();
308+
}
309+
298310
private void onLoadUiData() {
299311
if (!hasRoot && !RootToolsEx.isAccessGiven(0, 0)) {
300312
new MaterialDialog.Builder(this)
@@ -485,6 +497,10 @@ public void onRefresh() {
485497
} else {
486498
fragment = new InstallFragment();
487499
}
500+
} else if (id == R.id.nav_override_ota) {
501+
mDrawer.closeDrawer(GravityCompat.START);
502+
showOverrideOTAServerDialog();
503+
return true;
488504
}
489505

490506
mActiveMenuItemId = item.getItemId();

app/src/main/java/org/efidroid/efidroidmanager/types/SystemPropertiesProxy.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -251,8 +251,12 @@ public static void set(Context context, String key, String val) throws IllegalAr
251251

252252
try {
253253

254-
@SuppressWarnings("unused")
255-
DexFile df = new DexFile(new File("/system/app/Settings.apk"));
254+
try {
255+
@SuppressWarnings("unused")
256+
DexFile df = new DexFile(new File("/system/app/Settings.apk"));
257+
} catch (Exception e) {
258+
e.printStackTrace();
259+
}
256260
@SuppressWarnings("unused")
257261
ClassLoader cl = context.getClassLoader();
258262
@SuppressWarnings("rawtypes")

app/src/main/res/menu/activity_main_drawer.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@
3333
android:id="@+id/nav_install"
3434
android:icon="@drawable/ic_menu_settings"
3535
android:title="@string/install_update" />
36+
<item
37+
android:id="@+id/nav_override_ota"
38+
android:icon="@drawable/ic_menu_settings"
39+
android:title="@string/override_ota_server" />
3640
</group>
3741

3842
<group android:id="@+id/nav_group_communicate">

app/src/main/res/values/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@
7575
<string name="cant_load_install_info">"Can\'t load installation info. "</string>
7676
<string name="cant_load_device_info_check_connection">Can\'t load device info. Please check your connection.\n\n</string>
7777
<string name="try_again">Try again</string>
78+
<string name="override_ota_server">Override OTA server</string>
7879
<string name="you_need_root">You need Root access to use this app.</string>
7980
<string name="share_text">I\'m running EFIDroid on my %1$s!\nMore info: http://efidroid.org</string>
8081
<string name="os_delete_confirmation">Do you want to delete \'%1$s\'?</string>

0 commit comments

Comments
 (0)