Android Open Source - sdk-android-2 Diagnostic Preferences






From Project

Back to project page sdk-android-2.

License

The source code is released under:

Apache License

If you think the Android project sdk-android-2 listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/**
 * Copyright 2013 Medium Entertainment, Inc.
 */*  w ww . j  av a  2s.  com*/
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.playhaven.android.diagnostic;

import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.util.Log;
import android.widget.Toast;

import com.playhaven.android.Version;
import com.playhaven.android.PlayHaven;
import com.playhaven.android.PlayHaven.Config;
import com.playhaven.android.PlayHavenException;

import static com.playhaven.android.diagnostic.DiagnosticPreferences.Pref.*;

/**
 * Preferences view for the Diagnostic Application
 */
public class DiagnosticPreferences extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener
{
    public enum Pref
    {
        pref_token,
        pref_secret,
        pref_server,
        pref_file,
        pref_log,
        pref_id,
        pref_sdkversion,
        pref_osversion,
        pref_osapi,
        pref_gcmacct,
        pref_projectid,
        pref_dimensions;

        public String getString(SharedPreferences pref)
        {
            return getString(pref, null);
        }
        public String getString(SharedPreferences pref, String defaultValue)
        {
            return pref.getString(toString(), defaultValue);
        }
    }

    public enum Category
    {
        pref_manual,
        pref_auto,
        pref_misc
    }
    
    /**
     * This is for instrumentation tests. 
     * @return
     */
    public String easterEggs = "";

    @Override
    @SuppressWarnings("deprecation")
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        /**
         * These methods are deprecated in API11 in favor of PreferenceFragment
         * But we're keeping this simple for the example
         */
        addPreferencesFromResource(R.layout.prefs);
        reset(getPreferenceScreen().getSharedPreferences());
        
        // Check for easter eggs. 
        Uri originatingUri = getIntent().getData();
        if(originatingUri != null) {
            easterEggs = getIntent().getData().getQueryParameter("easterEggs");
            if(easterEggs != null) {
              Toast.makeText(this, String.format("Found easter eggs: %s", easterEggs), Toast.LENGTH_LONG).show();
            }
        }
    }

    @Override
    @SuppressWarnings("deprecation")
    protected void onDestroy() {
        getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
        super.onDestroy();
    }

    @Override
    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
        Pref pref_key = Pref.valueOf(key);
        String value = pref_key.getString(sharedPreferences);

        // VALIDATION
        boolean altered = false;
        switch(pref_key)
        {
            case pref_server:
                if(value == null || value.length() == 0)
                {
                    setSummary(pref_key, null);
                    break;
                }
                if(!value.endsWith(".com/"))
                {
                    value = null;
                    altered = true;
                    break;
                }
                if(! (value.startsWith("https://") || value.startsWith("http://")) )
                {
                    value = "http://" + value;
                    altered = true;
                    break;
                }
                /**
                 * We *could* verify that the calling the url returns
                 * <code>
                 * {
                 *  "errobj": null,
                 *  "response": "PlayHaven Client API",
                 *  "error": null
                 * }
                 * </code>
                 */
                break;
            case pref_file:
                reset(sharedPreferences);
                break;
            case pref_dimensions:
                break;
            default:
                break;
        }

        if(altered)
            setValue(sharedPreferences, key, value);

        setSummary(pref_key, value);
        ((DiagnosticApp)getApplication()).pendingChanges = true;
    }

    @SuppressWarnings("deprecation")
    protected void reset(SharedPreferences preferences)
    {
        preferences.unregisterOnSharedPreferenceChangeListener(this);
        for(Pref pref_key : Pref.values()){
            setSummary(pref_key, pref_key.getString(preferences));
        }

        String fileName = Pref.pref_file.getString(preferences);
        boolean fileEnabled = (fileName != null && fileName.length() > 0);
        findPreference(Category.pref_manual.toString()).setEnabled(!fileEnabled);
        if(fileEnabled)
        {
          try {
              PlayHaven.configure(this, fileName);
          } catch (PlayHavenException e){
            PlayHaven.e(e);
          }
          
      SharedPreferences storedPrefs = PlayHaven.getPreferences(this);
      setSummary(Pref.pref_projectid, storedPrefs.getString(Config.PushProjectId.name(), ""));
      setSummary(Pref.pref_secret, storedPrefs.getString(Config.Secret.name(), ""));
      setSummary(Pref.pref_token, storedPrefs.getString(Config.Token.name(), ""));
      setSummary(Pref.pref_server, storedPrefs.getString(Config.APIServer.name(), ""));
        }

        Preference pref = findPreference(pref_id.toString());
        pref.setSummary(new com.playhaven.android.DeviceId(this).toString());

        pref = findPreference(pref_sdkversion.toString());
        pref.setSummary(Version.PROJECT_VERSION);

        pref = findPreference(pref_osversion.toString());
        pref.setSummary(Build.VERSION.RELEASE);

        pref = findPreference(pref_osapi.toString());
        pref.setSummary(Build.VERSION.SDK_INT + "");

        pref = findPreference(pref_gcmacct.toString());
        android.accounts.AccountManager acctMgr = android.accounts.AccountManager.get(this);
        final android.accounts.Account[] accounts = acctMgr.getAccounts();
        if(accounts != null && accounts.length > 0)
        {
            for(final android.accounts.Account account : accounts)
            {
                if(account.type.equals("com.google"))
                {
                    pref.setSummary(account.name);
                    break;
                }
            }
        }

        preferences.registerOnSharedPreferenceChangeListener(this);
    }

    @SuppressWarnings("deprecation")
    protected void setSummary(Pref pref_key, String value)
    {
        Preference pref = findPreference(pref_key.toString());
        pref.setSummary(value == null ? "" : value);
    }

    protected void setValue(SharedPreferences sharedPreferences, Pref pref_key, String value)
    {
        setValue(sharedPreferences, pref_key.toString(), value);
    }
    
    protected void setValue(SharedPreferences sharedPreferences, String key, String value)
    {
        SharedPreferences.Editor editor = sharedPreferences.edit();
        if(value == null || value.length() == 0)
            editor.remove(key);
        else
            editor.putString(key, value);

        editor.commit();
        ((DiagnosticApp)getApplication()).pendingChanges = true;
    }
}




Java Source Code List

com.playhaven.android.DeviceId.java
com.playhaven.android.PlacementListener.java
com.playhaven.android.Placement.java
com.playhaven.android.PlayHavenException.java
com.playhaven.android.PlayHaven.java
com.playhaven.android.PushPlacement.java
com.playhaven.android.cache.BulkCacheDownloader.java
com.playhaven.android.cache.CacheCleaner.java
com.playhaven.android.cache.CacheDownloader.java
com.playhaven.android.cache.CacheResponseHandler.java
com.playhaven.android.cache.Cache.java
com.playhaven.android.cache.CachedInfo.java
com.playhaven.android.cache.package-info.java
com.playhaven.android.compat.UnityCompat.java
com.playhaven.android.compat.VendorCompat.java
com.playhaven.android.data.ContentUnitType.java
com.playhaven.android.data.CustomEvent.java
com.playhaven.android.data.DataCollectionField.java
com.playhaven.android.data.JsonUrlExtractor.java
com.playhaven.android.data.Purchase.java
com.playhaven.android.data.Reward.java
com.playhaven.android.data.package-info.java
com.playhaven.android.diagnostic.APIValidationIndicators.java
com.playhaven.android.diagnostic.DiagnosticApp.java
com.playhaven.android.diagnostic.DiagnosticPreferences.java
com.playhaven.android.diagnostic.InstrumentationReceiver.java
com.playhaven.android.diagnostic.Launcher.java
com.playhaven.android.diagnostic.OutputBox.java
com.playhaven.android.diagnostic.RequestTypeAdapter.java
com.playhaven.android.diagnostic.RequestType.java
com.playhaven.android.examples.ContentExample2.java
com.playhaven.android.examples.ContentExample.java
com.playhaven.android.examples.DialogExample.java
com.playhaven.android.examples.DisplayOptExample.java
com.playhaven.android.examples.EmbeddedExample.java
com.playhaven.android.examples.IAPTrackingExample.java
com.playhaven.android.examples.LoggingExample.java
com.playhaven.android.examples.MoreGamesExample.java
com.playhaven.android.examples.NoContent1Example.java
com.playhaven.android.examples.NoContent2Example.java
com.playhaven.android.examples.OnResumeExample.java
com.playhaven.android.examples.OpenExample.java
com.playhaven.android.examples.OptInExample.java
com.playhaven.android.examples.PreloadDialogExample.java
com.playhaven.android.examples.PreloadExample.java
com.playhaven.android.examples.PurchaseExample.java
com.playhaven.android.examples.RewardExample.java
com.playhaven.android.examples.WebviewFullscreenExample.java
com.playhaven.android.push.GCMBroadcastReceiver.java
com.playhaven.android.push.GCMRegistrationRequest.java
com.playhaven.android.push.NotificationBuilder.java
com.playhaven.android.push.PushReceiver.java
com.playhaven.android.req.ContentDispatchRequest.java
com.playhaven.android.req.ContentDispatchType.java
com.playhaven.android.req.ContentRequest.java
com.playhaven.android.req.ContentUnitRequest.java
com.playhaven.android.req.CustomEventRequest.java
com.playhaven.android.req.Identifier.java
com.playhaven.android.req.InstallRequest.java
com.playhaven.android.req.MetadataRequest.java
com.playhaven.android.req.NoContentException.java
com.playhaven.android.req.NoIdentifierException.java
com.playhaven.android.req.OpenRequest.java
com.playhaven.android.req.PlayHavenRequest.java
com.playhaven.android.req.PurchaseTrackingRequest.java
com.playhaven.android.req.PushTrackingRequest.java
com.playhaven.android.req.RequestListener.java
com.playhaven.android.req.ServerErrorHandler.java
com.playhaven.android.req.SignatureException.java
com.playhaven.android.req.SubcontentRequest.java
com.playhaven.android.req.UrlRequest.java
com.playhaven.android.req.UserAgent.java
com.playhaven.android.req.package-info.java
com.playhaven.android.util.DisplayUtil.java
com.playhaven.android.util.GoogleAdvertisementUtil.java
com.playhaven.android.util.GooglePlayServicesUtil.java
com.playhaven.android.util.JsonUtil.java
com.playhaven.android.util.KontagentUtil.java
com.playhaven.android.util.MemoryReporter.java
com.playhaven.android.util.TimeZoneFormatter.java
com.playhaven.android.util.package-info.java
com.playhaven.android.view.Badge.java
com.playhaven.android.view.ChildView.java
com.playhaven.android.view.DefaultPlayHavenListener.java
com.playhaven.android.view.FrameManager.java
com.playhaven.android.view.FullScreen.java
com.playhaven.android.view.HTMLView.java
com.playhaven.android.view.MoreGames.java
com.playhaven.android.view.NativeView.java
com.playhaven.android.view.PlayHavenListener.java
com.playhaven.android.view.PlayHavenView.java
com.playhaven.android.view.Windowed.java
com.playhaven.android.view.package-info.java
com.playhaven.android.package-info.java
javax.annotation.Generated.java
javax.annotation.package-info.java
${package}.__artifactId__Activity.java