diff options
Diffstat (limited to 'src/com/cyanogenmod/filemanager/activities/NavigationActivity.java')
-rwxr-xr-x | src/com/cyanogenmod/filemanager/activities/NavigationActivity.java | 76 |
1 files changed, 63 insertions, 13 deletions
diff --git a/src/com/cyanogenmod/filemanager/activities/NavigationActivity.java b/src/com/cyanogenmod/filemanager/activities/NavigationActivity.java index bf663b65..5cfeb5bb 100755 --- a/src/com/cyanogenmod/filemanager/activities/NavigationActivity.java +++ b/src/com/cyanogenmod/filemanager/activities/NavigationActivity.java @@ -42,6 +42,7 @@ import android.os.Environment; import android.os.Handler; import android.os.Parcelable; import android.os.storage.StorageVolume; +import android.provider.Settings; import android.support.v4.app.ActionBarDrawerToggle; import android.support.v4.widget.DrawerLayout; import android.text.TextUtils; @@ -121,6 +122,7 @@ import com.cyanogenmod.filemanager.util.FileHelper; import com.cyanogenmod.filemanager.util.MimeTypeHelper.MimeTypeCategory; import com.cyanogenmod.filemanager.util.MountPointHelper; import com.cyanogenmod.filemanager.util.StorageHelper; +import com.cyngn.uicommon.view.Snackbar; import java.io.File; import java.io.FileNotFoundException; @@ -527,10 +529,58 @@ public class NavigationActivity extends Activity mDrawerToggle.syncState(); } } else { - String text = getResources().getString(R.string.storage_permissions_denied); - Toast.makeText(this, text, Toast.LENGTH_LONG).show(); - finish(); + if (shouldShowRequestPermissionRationale(Manifest.permission.WRITE_EXTERNAL_STORAGE)) { + String text = getResources().getString(R.string.storage_permissions_denied); + final ViewGroup viewGroup = (ViewGroup) ((ViewGroup) this + .findViewById(android.R.id.content)).getChildAt(0); + if (viewGroup != null) { + Snackbar snackbar = Snackbar.make(viewGroup, text, + Snackbar.LENGTH_INDEFINITE, 3); + snackbar.setAction(R.string.snackbar_ok, new OnClickListener() { + @Override + public void onClick(View v) { + requestNecessaryPermissions(); + } + }); + snackbar.show(); + } + } else { + StringBuilder builder = new StringBuilder(getString(R.string + .storage_permissions_denied)); + builder.append("\n\n"); + builder.append(getString(R.string.storage_permissions_explanation)); + final ViewGroup viewGroup = (ViewGroup) ((ViewGroup) this + .findViewById(android.R.id.content)).getChildAt(0); + if (viewGroup != null) { + Snackbar snackbar = Snackbar.make(viewGroup, builder.toString(), + Snackbar.LENGTH_INDEFINITE, 7); + snackbar.setAction(R.string.snackbar_settings, new OnClickListener() { + @Override + public void onClick(View v) { + startInstalledAppDetailsActivity(NavigationActivity.this); + finish(); + } + }); + snackbar.show(); + } + } + + } + + } + + public static void startInstalledAppDetailsActivity(final Activity context) { + if (context == null) { + return; } + final Intent i = new Intent(); + i.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); + i.addCategory(Intent.CATEGORY_DEFAULT); + i.setData(Uri.parse("package:" + context.getPackageName())); + i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + i.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); + i.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); + context.startActivity(i); } private void finishOnCreate() { @@ -558,13 +608,6 @@ public class NavigationActivity extends Activity mImm = (InputMethodManager) this.getSystemService( Context.INPUT_METHOD_SERVICE); - // Set the theme before setContentView - Theme theme = ThemeManager.getCurrentTheme(this); - theme.setBaseThemeNoActionBar(this); - - //Set the main layout of the activity - setContentView(R.layout.navigation); - //Initialize nfc adapter NfcAdapter mNfcAdapter = NfcAdapter.getDefaultAdapter(this); if (mNfcAdapter != null) { @@ -669,15 +712,22 @@ public class NavigationActivity extends Activity Log.d(TAG, "NavigationActivity.onCreate"); //$NON-NLS-1$ } + // Set the theme before setContentView + Theme theme = ThemeManager.getCurrentTheme(this); + theme.setBaseThemeNoActionBar(this); + + //Set the main layout of the activity + setContentView(R.layout.navigation); + + //Save state + super.onCreate(state); + if (!hasPermissions()) { requestNecessaryPermissions(); } else { finishOnCreate(); } - //Save state - super.onCreate(state); - } @Override |