Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save brainail/c089659d019915a3dea3 to your computer and use it in GitHub Desktop.
Save brainail/c089659d019915a3dea3 to your computer and use it in GitHub Desktop.
Drive REST API, Settings Activity, Authorization button
public class ActivityWithAuthorizationButton
extends ActionBarActivity
implements AuthorizationFlow.Callback {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Display the fragment as the main content
initSettingsBox();
// ...
}
private void initSettingsBox() {
if (null == getFragmentManager().findFragmentByTag(SettingsFragment.MANAGER_TAG)) {
final FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.base_fragment_container, new SettingsFragment(), SettingsFragment.MANAGER_TAG).commit();
}
}
// ...
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
final SettingsFragment fragment = findSettingsFragment();
if (null != fragment && fragment.canHandleOnActivityResult(requestCode, resultCode, data)) return;
super.onActivityResult(requestCode, resultCode, data);
}
@Override
public void onAuthSucceed(final AuthUserInfo userInfo) {
// Save info about user
SettingsManager.getInstance().saveAccountDetails(userInfo);
// To ensure that it will happen on the UI thread
runOnUiThread(new Runnable() {
@Override
public void run() {
final SettingsFragment fragment = findSettingsFragment();
if (null != fragment) fragment.onChangeAccount(userInfo.email);
}
});
}
private SettingsFragment findSettingsFragment() {
return (SettingsFragment) getFragmentManager().findFragmentByTag(SettingsFragment.MANAGER_TAG);
}
//
// +------------------------------------------------------------+
// | Settings Fragment |
// +------------------------------------------------------------+
// ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public static class SettingsFragment extends PreferenceFragment implements Preference.OnPreferenceClickListener {
public static final String MANAGER_TAG = "<Application Id>.tag#settings";
private AuthorizationFlow mAuthorizationFlow = new AuthorizationFlow(null);
@Override
public void onAttach(Activity activity) {
mAuthorizationFlow.withActivity(activity);
super.onAttach(activity);
}
// ...
@Override
public boolean onPreferenceClick(final Preference preference) {
if (isAuthorization(preference)) {
mAuthorizationFlow.authorize();
} else if (isUnauthorization(preference)) {
mAuthorizationFlow.unauthorize();
}
return false;
}
private void onChangeAccount(final String accountDescription) {
// ...
}
private boolean canHandleOnActivityResult(final int requestCode, final int resultCode, final Intent data) {
return mAuthorizationFlow.handleOnActivityResult(requestCode, resultCode, data);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment