fdroiddata/metadata/org.gnucash.android/disable_gms_dropbox.diff
أحمد المحمودي (Ahmed El-Mahmoudy) f27b627e2e Amends to patch removing Dropbox & Google Drive
2015-07-14 17:20:37 +02:00

510 lines
25 KiB
Diff

diff --git a/app/src/main/java/org/gnucash/android/ui/export/ExportDialogFragment.java b/app/src/main/java/org/gnucash/android/ui/export/ExportDialogFragment.java
index 6df927c..6b8da42 100644
--- a/app/src/main/java/org/gnucash/android/ui/export/ExportDialogFragment.java
+++ b/app/src/main/java/org/gnucash/android/ui/export/ExportDialogFragment.java
@@ -39,7 +39,6 @@ import android.widget.TextView;
import com.doomonafireball.betterpickers.recurrencepicker.EventRecurrence;
import com.doomonafireball.betterpickers.recurrencepicker.EventRecurrenceFormatter;
import com.doomonafireball.betterpickers.recurrencepicker.RecurrencePickerDialog;
-import com.dropbox.sync.android.DbxAccountManager;
import org.gnucash.android.R;
import org.gnucash.android.app.GnuCashApplication;
@@ -215,23 +214,6 @@ public class ExportDialogFragment extends DialogFragment implements RecurrencePi
mExportTarget = ExportParams.ExportTarget.SD_CARD;
recurrenceOptionsView.setVisibility(View.VISIBLE);
break;
- case 1:
- recurrenceOptionsView.setVisibility(View.VISIBLE);
- mExportTarget = ExportParams.ExportTarget.DROPBOX;
- String dropboxAppKey = getString(R.string.dropbox_app_key, SettingsActivity.DROPBOX_APP_KEY);
- String dropboxAppSecret = getString(R.string.dropbox_app_secret, SettingsActivity.DROPBOX_APP_SECRET);
- DbxAccountManager mDbxAccountManager = DbxAccountManager.getInstance(getActivity().getApplicationContext(),
- dropboxAppKey, dropboxAppSecret);
- if (!mDbxAccountManager.hasLinkedAccount()){
- mDbxAccountManager.startLink(getActivity(), 0);
- }
- break;
- case 2:
- recurrenceOptionsView.setVisibility(View.VISIBLE);
- mExportTarget = ExportParams.ExportTarget.GOOGLE_DRIVE;
- SettingsActivity.mGoogleApiClient = SettingsActivity.getGoogleApiClient(getActivity());
- SettingsActivity.mGoogleApiClient.connect();
- break;
case 3:
mExportTarget = ExportParams.ExportTarget.SHARING;
recurrenceOptionsView.setVisibility(View.GONE);
@@ -344,9 +326,6 @@ public class ExportDialogFragment extends DialogFragment implements RecurrencePi
*/
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
- if (requestCode == SettingsActivity.REQUEST_RESOLVE_CONNECTION && resultCode == Activity.RESULT_OK) {
- SettingsActivity.mGoogleApiClient.connect();
- }
}
}
diff --git a/app/src/main/java/org/gnucash/android/ui/settings/BackupPreferenceFragment.java b/app/src/main/java/org/gnucash/android/ui/settings/BackupPreferenceFragment.java
index 4c7dc24..9d5101f 100644
--- a/app/src/main/java/org/gnucash/android/ui/settings/BackupPreferenceFragment.java
+++ b/app/src/main/java/org/gnucash/android/ui/settings/BackupPreferenceFragment.java
@@ -77,14 +77,6 @@ public class BackupPreferenceFragment extends PreferenceFragment implements OnPr
pref = findPreference(getString(R.string.key_create_backup));
pref.setOnPreferenceClickListener((SettingsActivity)getActivity());
-
- pref = findPreference(getString(R.string.key_dropbox_sync));
- pref.setOnPreferenceClickListener((SettingsActivity)getActivity());
- ((SettingsActivity)getActivity()).toggleDropboxPreference(pref);
-
- pref = findPreference(getString(R.string.key_google_drive_sync));
- pref.setOnPreferenceClickListener((SettingsActivity) getActivity());
- ((SettingsActivity)getActivity()).toggleGoogleDrivePreference(pref);
}
/**
diff --git a/app/src/main/java/org/gnucash/android/ui/settings/SettingsActivity.java b/app/src/main/java/org/gnucash/android/ui/settings/SettingsActivity.java
index a4ef751..7c4f2c7 100644
--- a/app/src/main/java/org/gnucash/android/ui/settings/SettingsActivity.java
+++ b/app/src/main/java/org/gnucash/android/ui/settings/SettingsActivity.java
@@ -40,15 +40,6 @@ import android.widget.Toast;
import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.SherlockPreferenceActivity;
import com.actionbarsherlock.view.MenuItem;
-import com.crashlytics.android.Crashlytics;
-import com.dropbox.sync.android.DbxAccountManager;
-import com.google.android.gms.common.ConnectionResult;
-import com.google.android.gms.common.GooglePlayServicesUtil;
-import com.google.android.gms.common.api.GoogleApiClient;
-import com.google.android.gms.common.api.ResultCallback;
-import com.google.android.gms.drive.Drive;
-import com.google.android.gms.drive.DriveFolder;
-import com.google.android.gms.drive.MetadataChangeSet;
import org.gnucash.android.R;
import org.gnucash.android.app.GnuCashApplication;
@@ -125,11 +116,6 @@ public class SettingsActivity extends SherlockPreferenceActivity implements OnPr
* Only useful on devices with API level < 11
*/
private int mDeleteTransactionsClickCount;
- private DbxAccountManager mDbxAccountManager;
- /**
- * Client for Google Drive Sync
- */
- public static GoogleApiClient mGoogleApiClient;
/**
* Constructs the headers to display in the header list when the Settings activity is first opened
@@ -146,13 +132,6 @@ public class SettingsActivity extends SherlockPreferenceActivity implements OnPr
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- String dropboxAppKey = getString(R.string.dropbox_app_key, DROPBOX_APP_KEY);
- String dropboxAppSecret = getString(R.string.dropbox_app_secret, DROPBOX_APP_SECRET);
- mDbxAccountManager = DbxAccountManager.getInstance(getApplicationContext(),
- dropboxAppKey, dropboxAppSecret);
-
- mGoogleApiClient = getGoogleApiClient(this);
-
//retrieve version from Manifest and set it
ActionBar actionBar = getSupportActionBar();
actionBar.setTitle(R.string.title_settings);
@@ -189,14 +168,6 @@ public class SettingsActivity extends SherlockPreferenceActivity implements OnPr
pref = findPreference(getString(R.string.key_change_passcode));
pref.setOnPreferenceClickListener(this);
- pref = findPreference(getString(R.string.key_dropbox_sync));
- toggleDropboxPreference(pref);
- pref.setOnPreferenceClickListener(this);
-
- pref = findPreference(getString(R.string.key_google_drive_sync));
- pref.setOnPreferenceClickListener(this);
- toggleGoogleDrivePreference(pref);
-
pref = findPreference(getString(R.string.key_create_backup));
pref.setOnPreferenceClickListener(this);
@@ -317,16 +288,6 @@ public class SettingsActivity extends SherlockPreferenceActivity implements OnPr
return true;
}
- if (key.equals(getString(R.string.key_dropbox_sync))){
- toggleDropboxSync();
- toggleDropboxPreference(preference);
- }
-
- if (key.equals(getString(R.string.key_google_drive_sync))){
- toggleGoogleDriveSync();
- toggleGoogleDrivePreference(preference);
- }
-
if (key.equals(getString(R.string.key_create_backup))){
boolean result = GncXmlExporter.createBackup();
int msg = result ? R.string.toast_backup_successful : R.string.toast_backup_failed;
@@ -385,110 +346,6 @@ public class SettingsActivity extends SherlockPreferenceActivity implements OnPr
}
/**
- * Toggles the authorization state of a DropBox account.
- * If a link exists, it is removed else DropBox authorization is started
- */
- private void toggleDropboxSync() {
- if (mDbxAccountManager.hasLinkedAccount()){
- mDbxAccountManager.unlink();
- } else {
- mDbxAccountManager.startLink(this, REQUEST_LINK_TO_DBX);
- }
- }
-
- /**
- * Toggles synchronization with Google Drive on or off
- */
- private void toggleGoogleDriveSync(){
- SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
- final String appFolderId = sharedPreferences.getString(getString(R.string.key_google_drive_app_folder_id), null);
- if (appFolderId != null){
- sharedPreferences.edit().remove(getString(R.string.key_google_drive_app_folder_id)).commit(); //commit (not apply) because we need it to be saved *now*
- mGoogleApiClient.disconnect();
- } else {
- mGoogleApiClient.connect();
- }
- }
-
- /**
- * Toggles the checkbox of the DropBox Sync preference if a DropBox account is linked
- * @param pref DropBox Sync preference
- */
- public void toggleDropboxPreference(Preference pref) {
- ((CheckBoxPreference)pref).setChecked(mDbxAccountManager.hasLinkedAccount());
- }
-
- /**
- * Toggles the checkbox of the GoogleDrive Sync preference if a Google Drive account is linked
- * @param pref Google Drive Sync preference
- */
- public void toggleGoogleDrivePreference(Preference pref){
- SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
- String appFolderId = sharedPreferences.getString(getString(R.string.key_google_drive_app_folder_id),null);
- ((CheckBoxPreference)pref).setChecked(appFolderId != null);
- }
-
-
- public static GoogleApiClient getGoogleApiClient(final Context context) {
- return new GoogleApiClient.Builder(context)
- .addApi(Drive.API)
- .addScope(Drive.SCOPE_APPFOLDER)
- .addScope(Drive.SCOPE_FILE)
- .addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() {
- @Override
- public void onConnected(Bundle bundle) {
- SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
- String appFolderId = sharedPreferences.getString(context.getString(R.string.key_google_drive_app_folder_id), null);
- if (appFolderId == null) {
- MetadataChangeSet changeSet = new MetadataChangeSet.Builder()
- .setTitle(context.getString(R.string.app_name)).build();
- Drive.DriveApi.getRootFolder(mGoogleApiClient).createFolder(
- mGoogleApiClient, changeSet).setResultCallback(new ResultCallback<DriveFolder.DriveFolderResult>() {
- @Override
- public void onResult(DriveFolder.DriveFolderResult result) {
- if (!result.getStatus().isSuccess()) {
- Log.e(LOG_TAG, "Error creating the application folder");
- return;
- }
-
- String folderId = result.getDriveFolder().getDriveId().toString();
- PreferenceManager.getDefaultSharedPreferences(context)
- .edit().putString(context.getString(R.string.key_google_drive_app_folder_id),
- folderId).commit(); //commit because we need it to be saved *now*
- }
- });
-
- }
- Toast.makeText(context, "Connected to Google Drive", Toast.LENGTH_SHORT).show();
- }
-
- @Override
- public void onConnectionSuspended(int i) {
- Toast.makeText(context, "Connection to Google Drive suspended!", Toast.LENGTH_LONG).show();
- }
- })
- .addOnConnectionFailedListener(new GoogleApiClient.OnConnectionFailedListener() {
- @Override
- public void onConnectionFailed(ConnectionResult connectionResult) {
- Log.e(SettingsActivity.class.getName(), "Connection to Google Drive failed");
- if (connectionResult.hasResolution() && context instanceof Activity) {
- try {
- Log.e(SettingsActivity.class.getName(), "Trying resolution of Google API connection failure");
- connectionResult.startResolutionForResult((Activity) context, REQUEST_RESOLVE_CONNECTION);
- } catch (IntentSender.SendIntentException e) {
- Log.e(SettingsActivity.class.getName(), e.getMessage());
- Toast.makeText(context, "Unable to link to Google Drive", Toast.LENGTH_LONG).show();
- }
- } else {
- if (context instanceof Activity)
- GooglePlayServicesUtil.getErrorDialog(connectionResult.getErrorCode(), (Activity) context, 0).show();
- }
- }
- })
- .build();
- }
-
- /**
* Resets the tap counter for preferences which need to be double-tapped
*/
private class ResetCounter extends TimerTask {
@@ -631,20 +484,9 @@ public class SettingsActivity extends SherlockPreferenceActivity implements OnPr
break;
case REQUEST_LINK_TO_DBX:
- Preference preference = findPreference(getString(R.string.key_dropbox_sync));
- if (preference == null) //if we are in a preference header fragment, this may return null
- break;
- toggleDropboxPreference(preference);
break;
case REQUEST_RESOLVE_CONNECTION:
- if (resultCode == RESULT_OK) {
- mGoogleApiClient.connect();
- Preference pref = findPreference(getString(R.string.key_dropbox_sync));
- if (pref == null) //if we are in a preference header fragment, this may return null
- break;
- toggleDropboxPreference(pref);
- }
break;
}
}
diff --git a/app/src/main/java/org/gnucash/android/export/ExportAsyncTask.java b/app/src/main/java/org/gnucash/android/export/ExportAsyncTask.java
index ba20e61..0833f79 100644
--- a/app/src/main/java/org/gnucash/android/export/ExportAsyncTask.java
+++ b/app/src/main/java/org/gnucash/android/export/ExportAsyncTask.java
@@ -30,21 +30,6 @@ import android.preference.PreferenceManager;
import android.util.Log;
import android.widget.Toast;
-import com.crashlytics.android.Crashlytics;
-import com.dropbox.sync.android.DbxAccountManager;
-import com.dropbox.sync.android.DbxException;
-import com.dropbox.sync.android.DbxFile;
-import com.dropbox.sync.android.DbxFileSystem;
-import com.dropbox.sync.android.DbxPath;
-import com.google.android.gms.common.api.GoogleApiClient;
-import com.google.android.gms.common.api.ResultCallback;
-import com.google.android.gms.drive.Drive;
-import com.google.android.gms.drive.DriveApi;
-import com.google.android.gms.drive.DriveContents;
-import com.google.android.gms.drive.DriveFolder;
-import com.google.android.gms.drive.DriveId;
-import com.google.android.gms.drive.MetadataChangeSet;
-
import org.gnucash.android.R;
import org.gnucash.android.app.GnuCashApplication;
import org.gnucash.android.db.AccountsDbAdapter;
@@ -178,14 +162,6 @@ public class ExportAsyncTask extends AsyncTask<ExportParams, Void, Boolean> {
shareFile(mExportParams.getTargetFilepath());
return true;
- case DROPBOX:
- copyExportToDropbox();
- return true;
-
- case GOOGLE_DRIVE:
- copyExportToGoogleDrive();
- return true;
-
case SD_CARD:
copyExportToSDCard();
return true;
@@ -212,12 +188,6 @@ public class ExportAsyncTask extends AsyncTask<ExportParams, Void, Boolean> {
case SD_CARD:
targetLocation = "SD card";
break;
- case DROPBOX:
- targetLocation = "DropBox -> Apps -> GnuCash";
- break;
- case GOOGLE_DRIVE:
- targetLocation = "Google Drive -> " + mContext.getString(R.string.app_name);
- break;
default:
targetLocation = "external service";
}
@@ -246,68 +216,6 @@ public class ExportAsyncTask extends AsyncTask<ExportParams, Void, Boolean> {
}
}
- private void copyExportToGoogleDrive(){
- Log.i(TAG, "Moving exported file to Google Drive");
- final GoogleApiClient googleApiClient = SettingsActivity.getGoogleApiClient(GnuCashApplication.getAppContext());
- googleApiClient.blockingConnect();
- final ResultCallback<DriveFolder.DriveFileResult> fileCallback = new
- ResultCallback<DriveFolder.DriveFileResult>() {
- @Override
- public void onResult(DriveFolder.DriveFileResult result) {
- if (!result.getStatus().isSuccess()) {
- Log.e(TAG, "Error while trying to sync to Google Drive");
- return;
- }
- Log.i(TAG, "Created a file with content: " + result.getDriveFile().getDriveId());
- }
- };
-
- Drive.DriveApi.newDriveContents(googleApiClient).setResultCallback(new ResultCallback<DriveApi.DriveContentsResult>() {
- @Override
- public void onResult(DriveApi.DriveContentsResult result) {
- if (!result.getStatus().isSuccess()) {
- Log.e(TAG, "Error while trying to create new file contents");
- return;
- }
- final DriveContents driveContents = result.getDriveContents();
- try {
- // write content to DriveContents
- OutputStream outputStream = driveContents.getOutputStream();
- List<String> exportedFilePaths = getExportedFiles();
- for (String exportedFilePath : exportedFilePaths) {
- File exportedFile = new File(exportedFilePath);
- FileInputStream fileInputStream = new FileInputStream(exportedFile);
- byte[] buffer = new byte[1024];
- int count = 0;
-
- while ((count = fileInputStream.read(buffer)) >= 0) {
- outputStream.write(buffer, 0, count);
- }
- fileInputStream.close();
- outputStream.flush();
- exportedFile.delete();
-
- MetadataChangeSet changeSet = new MetadataChangeSet.Builder()
- .setTitle(exportedFile.getName())
- .setMimeType(getExportMimeType())
- .build();
-
- SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(mContext);
- String folderId = sharedPreferences.getString(mContext.getString(R.string.key_google_drive_app_folder_id), "");
- DriveFolder folder = Drive.DriveApi.getFolder(googleApiClient, DriveId.decodeFromString(folderId));
- // create a file on root folder
- folder.createFile(googleApiClient, changeSet, driveContents)
- .setResultCallback(fileCallback);
- }
-
- } catch (IOException e) {
- Crashlytics.logException(e);
- Log.e(TAG, e.getMessage());
- }
- }
- });
- }
-
/**
* Returns the mime type for the configured export format
* @return MIME type as string
@@ -323,36 +231,6 @@ public class ExportAsyncTask extends AsyncTask<ExportParams, Void, Boolean> {
}
}
- private void copyExportToDropbox() {
- Log.i(TAG, "Copying exported file to DropBox");
- String dropboxAppKey = mContext.getString(R.string.dropbox_app_key, SettingsActivity.DROPBOX_APP_KEY);
- String dropboxAppSecret = mContext.getString(R.string.dropbox_app_secret, SettingsActivity.DROPBOX_APP_SECRET);
- DbxAccountManager mDbxAcctMgr = DbxAccountManager.getInstance(mContext.getApplicationContext(),
- dropboxAppKey, dropboxAppSecret);
- DbxFile dbExportFile = null;
- try {
- DbxFileSystem dbxFileSystem = DbxFileSystem.forAccount(mDbxAcctMgr.getLinkedAccount());
- List<String> exportedFilePaths = getExportedFiles();
- for (String exportedFilePath : exportedFilePaths) {
- File exportedFile = new File(exportedFilePath);
- dbExportFile = dbxFileSystem.create(new DbxPath(exportedFile.getName()));
- dbExportFile.writeFromExistingFile(exportedFile, false);
- exportedFile.delete();
- }
- } catch (DbxException.Unauthorized unauthorized) {
- Crashlytics.logException(unauthorized);
- Log.e(TAG, unauthorized.getMessage());
- throw new Exporter.ExporterException(mExportParams);
- } catch (IOException e) {
- Crashlytics.logException(e);
- Log.e(TAG, e.getMessage());
- } finally {
- if (dbExportFile != null) {
- dbExportFile.close();
- }
- }
- }
-
/**
* Returns the list of files generated by one export session.
* <p>Typically it is one file. But QIF export generate multiple files per currency.</p>
diff --git a/app/src/main/java/org/gnucash/android/export/ExportParams.java b/app/src/main/java/org/gnucash/android/export/ExportParams.java
index 120d052..b69aa01 100644
--- a/app/src/main/java/org/gnucash/android/export/ExportParams.java
+++ b/app/src/main/java/org/gnucash/android/export/ExportParams.java
@@ -33,7 +33,7 @@ public class ExportParams {
* Options for the destination of the exported transctions file.
* It could be stored on the {@link #SD_CARD} or exported through another program via {@link #SHARING}
*/
- public enum ExportTarget {SD_CARD, SHARING, DROPBOX, GOOGLE_DRIVE }
+ public enum ExportTarget {SD_CARD, SHARING}
/**
* Format to use for the exported transactions
diff --git a/app/src/main/res/xml/fragment_backup_preferences.xml b/app/src/main/res/xml/fragment_backup_preferences.xml
index 0b03b98..0dbe4f4 100644
--- a/app/src/main/res/xml/fragment_backup_preferences.xml
+++ b/app/src/main/res/xml/fragment_backup_preferences.xml
@@ -23,17 +23,6 @@
<Preference android:title="@string/title_restore_backup"
android:key="@string/key_restore_backup"
android:summary="@string/summary_restore_backup_pref" />
- <CheckBoxPreference android:title="@string/title_dropbox_sync_preference"
- android:summary="@string/summary_dropbox_sync"
- android:checked="false"
- android:key="@string/key_dropbox_sync"
- android:icon="@drawable/ic_dropbox_android" />
-
- <CheckBoxPreference android:title="@string/title_google_drive_sync_pref"
- android:summary="@string/summary_google_drive_sync"
- android:checked="false"
- android:key="@string/key_google_drive_sync"
- android:icon="@drawable/ic_google_drive" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/title_export_preference_category">
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 3448ead..4090d50 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -43,9 +43,6 @@
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"
android:label="Schedule repeating transactions when device is rebooted"/>
- <uses-permission android:name="android.permission.INTERNET"
- android:label="Export and backup to 3rd party hosting services" />
- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application android:name="org.gnucash.android.app.GnuCashApplication"
android:icon="@drawable/ic_launcher"
@@ -100,24 +100,6 @@
<activity android:name=".ui.chart.PieChartActivity" />
<activity android:name=".ui.chart.LineChartActivity" />
<activity android:name=".ui.chart.BarChartActivity" />
- <activity android:name="com.dropbox.sync.android.DbxAuthActivity" />
- <activity
- android:name="com.dropbox.client2.android.AuthActivity"
- android:launchMode="singleTask"
- android:configChanges="orientation|keyboard">
- <intent-filter>
- <!-- Change this to be db- followed by your app key -->
- <data android:scheme="@string/manifest_dropbox_app_key" />
- <action android:name="android.intent.action.VIEW" />
- <category android:name="android.intent.category.BROWSABLE"/>
- <category android:name="android.intent.category.DEFAULT" />
- </intent-filter>
- </activity>
- <service
- android:name="com.dropbox.sync.android.DbxSyncService"
- android:enabled="true"
- android:exported="false"
- android:label="Dropbox Sync" />
<service android:name=".service.SchedulerService"
android:exported="false"
android:label="GnuCash Android Scheduler Execution Service"/>