/* * This file is part of GPSLogger for Android. * * GPSLogger for Android is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2 of the License, or * (at your option) any later version. * * GPSLogger for Android is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with GPSLogger for Android. If not, see <http://www.gnu.org/licenses/>. */ package com.mendhak.gpslogger.senders.osm; import android.content.Intent; import android.content.SharedPreferences; import android.net.Uri; import android.os.Bundle; import android.preference.Preference; import android.preference.PreferenceActivity; import android.preference.PreferenceManager; import com.mendhak.gpslogger.GpsMainActivity; import arida.ufc.br.moapgpstracker.R; import com.mendhak.gpslogger.common.Utilities; import oauth.signpost.OAuth; import oauth.signpost.OAuthConsumer; import oauth.signpost.OAuthProvider; public class OSMAuthorizationActivity extends PreferenceActivity { private static OAuthProvider provider; private static OAuthConsumer consumer; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.osmsettings); final Intent intent = getIntent(); final Uri myURI = intent.getData(); if (myURI != null && myURI.getQuery() != null && myURI.getQuery().length() > 0) { //User has returned! Read the verifier info from querystring String oAuthVerifier = myURI.getQueryParameter("oauth_verifier"); try { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); if (provider == null) { provider = OSMHelper.GetOSMAuthProvider(getApplicationContext()); } if (consumer == null) { //In case consumer is null, re-initialize from stored values. consumer = OSMHelper.GetOSMAuthConsumer(getApplicationContext()); } //Ask OpenStreetMap for the access token. This is the main event. provider.retrieveAccessToken(consumer, oAuthVerifier); String osmAccessToken = consumer.getToken(); String osmAccessTokenSecret = consumer.getTokenSecret(); //Save for use later. SharedPreferences.Editor editor = prefs.edit(); editor.putString("osm_accesstoken", osmAccessToken); editor.putString("osm_accesstokensecret", osmAccessTokenSecret); editor.commit(); //Now go away startActivity(new Intent(getApplicationContext(), GpsMainActivity.class)); finish(); } catch (Exception e) { Utilities.LogError("OSMAuthorizationActivity.onCreate - user has returned", e); Utilities.MsgBox(getString(R.string.sorry), getString(R.string.osm_auth_error), this); } } Preference visibilityPref = findPreference("osm_visibility"); Preference descriptionPref = findPreference("osm_description"); Preference tagsPref = findPreference("osm_tags"); Preference resetPref = findPreference("osm_resetauth"); if (!OSMHelper.IsOsmAuthorized(getApplicationContext())) { resetPref.setTitle(R.string.osm_lbl_authorize); resetPref.setSummary(R.string.osm_lbl_authorize_description); visibilityPref.setEnabled(false); descriptionPref.setEnabled(false); tagsPref.setEnabled(false); } else { visibilityPref.setEnabled(true); descriptionPref.setEnabled(true); tagsPref.setEnabled(true); } resetPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { public boolean onPreferenceClick(Preference preference) { if (OSMHelper.IsOsmAuthorized(getApplicationContext())) { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); SharedPreferences.Editor editor = prefs.edit(); editor.remove("osm_accesstoken"); editor.remove("osm_accesstokensecret"); editor.remove("osm_requesttoken"); editor.remove("osm_requesttokensecret"); editor.commit(); startActivity(new Intent(getApplicationContext(), GpsMainActivity.class)); finish(); } else { try { //User clicks. Set the consumer and provider up. consumer = OSMHelper.GetOSMAuthConsumer(getApplicationContext()); provider = OSMHelper.GetOSMAuthProvider(getApplicationContext()); String authUrl; //Get the request token and request token secret authUrl = provider.retrieveRequestToken(consumer, OAuth.OUT_OF_BAND); //Save for later SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); SharedPreferences.Editor editor = prefs.edit(); editor.putString("osm_requesttoken", consumer.getToken()); editor.putString("osm_requesttokensecret", consumer.getTokenSecret()); editor.commit(); //Open browser, send user to OpenStreetMap.org Uri uri = Uri.parse(authUrl); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent); } catch (Exception e) { Utilities.LogError("OSMAuthorizationActivity.onClick", e); Utilities.MsgBox(getString(R.string.sorry), getString(R.string.osm_auth_error), OSMAuthorizationActivity.this); } } return true; } }); // Button authButton = (Button) findViewById(R.id.btnAuthorizeOSM); // authButton.setOnClickListener(this); } }