Skip to content

Commit

Permalink
Fixes codinguser#661 - Remove WRITE_EXTERNAL_STORAGE permission for A…
Browse files Browse the repository at this point in the history
…ndroid 4.4 (KitKat) and above

Earlier Android versions would still require this permission
  • Loading branch information
codinguser committed Apr 17, 2017
1 parent e95c665 commit 46859ae
Show file tree
Hide file tree
Showing 5 changed files with 4 additions and 87 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ Version 2.2.0 *(2017-05-xx)*
* Fixed #625: Hourly backups were being executed on a monthly basis
* Fixed #607: Widgets stop functioning after switching books
* Improved #635: Improved support for BYN currency
* Improved #661: Removed need for WRITE_EXTERNAL_STORAGE permission for Android 4.4 (KitKat) and above

Version 2.1.6 *(2017-04-15)*
----------------------------
Expand Down
3 changes: 2 additions & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,8 @@
<uses-permission android:label="@string/label_permission_create_accounts"
android:name="org.gnucash.android.permission.CREATE_ACCOUNT" />
<uses-permission android:label="@string/permission_access_sdcard"
android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="18"/>
<uses-permission android:name="android.permission.VIBRATE"
android:label="Allow device to vibrate with notifications" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,6 @@ public class AccountsActivity extends BaseDrawerActivity implements OnAccountCli
* Key for putting argument for tab into bundle arguments
*/
public static final String EXTRA_TAB_INDEX = "org.gnucash.android.extra.TAB_INDEX";
public static final int REQUEST_PERMISSION_WRITE_SD_CARD = 0xAB;

/**
* Map containing fragments for the different tabs
Expand Down Expand Up @@ -300,50 +299,6 @@ private void handleOpenFileIntent(Intent intent) {
}
}

/**
* Get permission for WRITING SD card
*/
@TargetApi(23)
private void getSDWritePermission(){
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
// if (shouldShowRequestPermissionRationale(Manifest.permission.WRITE_EXTERNAL_STORAGE)){
Snackbar.make(mCoordinatorLayout,
"GnuCash requires permission to access the SD card for backup and restore",
Snackbar.LENGTH_INDEFINITE).setAction("GRANT",
new View.OnClickListener() {
@Override
public void onClick(View view) {
requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE}, REQUEST_PERMISSION_WRITE_SD_CARD);
}
})
.setActionTextColor(getResources().getColor(R.color.theme_accent))
.show();
// }
}
}
}

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode){
case REQUEST_PERMISSION_WRITE_SD_CARD:{
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {

//TODO: permission was granted, yay! do the
// calendar task you need to do.

} else {

// TODO: permission denied, boo! Disable the
// functionality that depends on this permission.
}
} return;
}
}

@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Expand Down Expand Up @@ -388,8 +343,6 @@ private void init() {
return;
}

getSDWritePermission();

if (hasNewFeatures()){
showWhatsNewDialog(this);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -232,8 +232,6 @@ public void onActivityCreated(Bundle savedInstanceState) {
assert supportActionBar != null;
supportActionBar.setTitle(R.string.title_export_dialog);
setHasOptionsMenu(true);

getSDWritePermission();
}

@Override
Expand All @@ -252,19 +250,6 @@ public void onPause() {
prefs.edit().putBoolean(UxArgument.SKIP_PASSCODE_SCREEN, true).apply();
}

/**
* Get permission for WRITING SD card for Android Marshmallow and above
*/
private void getSDWritePermission(){
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (getActivity().checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
getActivity().requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE}, AccountsActivity.REQUEST_PERMISSION_WRITE_SD_CARD);
}
}
}

/**
* Starts the export of transactions with the specified parameters
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -160,13 +160,7 @@ public void onClick(View view) {
}
preferenceEditor.apply();


if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE}, AccountsActivity.REQUEST_PERMISSION_WRITE_SD_CARD);
} else { //on other version of Android, just proceed with processing. On Android M, we import when permission grant returns
createAccountsAndFinish();
}
createAccountsAndFinish();
} else {
if (mEditingAfterReview) {
mPager.setCurrentItem(mPagerAdapter.getCount() - 1);
Expand Down Expand Up @@ -282,23 +276,6 @@ public void onTaskComplete() {
}
}

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode){
case AccountsActivity.REQUEST_PERMISSION_WRITE_SD_CARD:{
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
createAccountsAndFinish();
} else {
// permission denied, boo!
// nothing to see here, move along
finish();
AccountsActivity.removeFirstRunFlag();
}
}
}

}

@Override
protected void onDestroy() {
super.onDestroy();
Expand Down

0 comments on commit 46859ae

Please sign in to comment.