|
@@ -28,17 +28,22 @@ import android.content.ComponentName;
|
|
|
import android.content.Context;
|
|
|
import android.content.Intent;
|
|
|
import android.content.ServiceConnection;
|
|
|
+import android.content.pm.PackageManager;
|
|
|
+import android.net.Uri;
|
|
|
import android.os.Bundle;
|
|
|
import android.os.Handler;
|
|
|
import android.os.IBinder;
|
|
|
+import android.support.design.widget.Snackbar;
|
|
|
import android.support.v4.app.Fragment;
|
|
|
import android.support.v4.app.FragmentManager;
|
|
|
import android.support.v4.app.FragmentTransaction;
|
|
|
+import android.view.View;
|
|
|
import android.widget.Toast;
|
|
|
|
|
|
import com.owncloud.android.MainApp;
|
|
|
import com.owncloud.android.R;
|
|
|
import com.owncloud.android.authentication.AuthenticatorActivity;
|
|
|
+import com.owncloud.android.datamodel.ArbitraryDataProvider;
|
|
|
import com.owncloud.android.datamodel.OCFile;
|
|
|
import com.owncloud.android.files.services.FileDownloader;
|
|
|
import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder;
|
|
@@ -63,12 +68,16 @@ import com.owncloud.android.operations.UpdateSharePermissionsOperation;
|
|
|
import com.owncloud.android.operations.UpdateShareViaLinkOperation;
|
|
|
import com.owncloud.android.services.OperationsService;
|
|
|
import com.owncloud.android.services.OperationsService.OperationsServiceBinder;
|
|
|
+import com.owncloud.android.ui.asynctasks.LoadingVersionNumberTask;
|
|
|
import com.owncloud.android.ui.dialog.ConfirmationDialogFragment;
|
|
|
import com.owncloud.android.ui.dialog.LoadingDialog;
|
|
|
import com.owncloud.android.ui.dialog.SslUntrustedCertDialog;
|
|
|
import com.owncloud.android.ui.helpers.FileOperationsHelper;
|
|
|
import com.owncloud.android.utils.DisplayUtils;
|
|
|
import com.owncloud.android.utils.ErrorMessageAdapter;
|
|
|
+import com.owncloud.android.utils.FilesSyncHelper;
|
|
|
+
|
|
|
+import java.util.concurrent.ExecutionException;
|
|
|
|
|
|
|
|
|
/**
|
|
@@ -79,8 +88,8 @@ public abstract class FileActivity extends DrawerActivity
|
|
|
|
|
|
public static final String EXTRA_FILE = "com.owncloud.android.ui.activity.FILE";
|
|
|
public static final String EXTRA_ACCOUNT = "com.owncloud.android.ui.activity.ACCOUNT";
|
|
|
- public static final String EXTRA_FROM_NOTIFICATION =
|
|
|
- "com.owncloud.android.ui.activity.FROM_NOTIFICATION";
|
|
|
+ public static final String EXTRA_FROM_NOTIFICATION = "com.owncloud.android.ui.activity.FROM_NOTIFICATION";
|
|
|
+ public static final String APP_OPENED_COUNT = "APP_OPENED_COUNT";
|
|
|
|
|
|
public static final String TAG = FileActivity.class.getSimpleName();
|
|
|
|
|
@@ -541,7 +550,7 @@ public abstract class FileActivity extends DrawerActivity
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public void restart(){
|
|
|
+ public void restart() {
|
|
|
Intent i = new Intent(this, FileDisplayActivity.class);
|
|
|
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
|
|
startActivity(i);
|
|
@@ -581,4 +590,52 @@ public abstract class FileActivity extends DrawerActivity
|
|
|
public void onCancelCertificate() {
|
|
|
// nothing to do
|
|
|
}
|
|
|
+
|
|
|
+ public void checkForNewDevVersionNecessary(View view, Context context) {
|
|
|
+ if (getResources().getBoolean(R.bool.dev_version_direct_download_enabled)) {
|
|
|
+ ArbitraryDataProvider arbitraryDataProvider = new ArbitraryDataProvider(getContentResolver());
|
|
|
+ int count = arbitraryDataProvider.getIntegerValue(FilesSyncHelper.GLOBAL, APP_OPENED_COUNT);
|
|
|
+
|
|
|
+ if (count > 10 || count == -1) {
|
|
|
+ checkForNewDevVersion(view, context, false);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void checkForNewDevVersion(View view, Context context, boolean openDirectly) {
|
|
|
+ Integer latestVersion = -1;
|
|
|
+ Integer currentVersion = -1;
|
|
|
+ try {
|
|
|
+ currentVersion = context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionCode;
|
|
|
+ String url = context.getString(R.string.dev_latest);
|
|
|
+ LoadingVersionNumberTask loadTask = new LoadingVersionNumberTask();
|
|
|
+ loadTask.execute(url);
|
|
|
+ latestVersion = loadTask.get();
|
|
|
+ } catch (InterruptedException | ExecutionException | PackageManager.NameNotFoundException e) {
|
|
|
+ Log_OC.e(TAG, "Error detecting app version", e);
|
|
|
+ }
|
|
|
+ if (latestVersion == -1 || currentVersion == -1) {
|
|
|
+ Snackbar.make(view, R.string.dev_version_no_information_available, Snackbar.LENGTH_SHORT).show();
|
|
|
+ }
|
|
|
+ if (latestVersion > currentVersion) {
|
|
|
+ if (openDirectly) {
|
|
|
+ String devApkLink = (String) context.getText(R.string.dev_link) + latestVersion + ".apk";
|
|
|
+ Uri uriUrl = Uri.parse(devApkLink);
|
|
|
+ Intent intent = new Intent(Intent.ACTION_VIEW, uriUrl);
|
|
|
+ context.startActivity(intent);
|
|
|
+ } else {
|
|
|
+ Integer finalLatestVersion = latestVersion;
|
|
|
+ Snackbar.make(view, R.string.dev_version_new_version_available, Snackbar.LENGTH_SHORT)
|
|
|
+ .setAction(context.getString(R.string.version_dev_download), v -> {
|
|
|
+ String devApkLink = (String) context.getText(R.string.dev_link)
|
|
|
+ + finalLatestVersion + ".apk";
|
|
|
+ Uri uriUrl = Uri.parse(devApkLink);
|
|
|
+ Intent intent = new Intent(Intent.ACTION_VIEW, uriUrl);
|
|
|
+ context.startActivity(intent);
|
|
|
+ }).show();
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ Snackbar.make(view, R.string.dev_version_no_new_version_available, Snackbar.LENGTH_SHORT).show();
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|