Android Open Source - DashClockWidget Widget Click Proxy Activity






From Project

Back to project page DashClockWidget.

License

The source code is released under:

Apache License

If you think the Android project DashClockWidget 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 Google Inc.//from  w  ww . j  ava  2 s .  c  om
 *
 * 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.google.android.apps.dashclock;

import com.google.android.apps.dashclock.api.DashClockExtension;

import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;

import java.net.URISyntaxException;

import static com.google.android.apps.dashclock.LogUtils.LOGE;

/**
 * A basic proxy activity for handling widget clicks.
 */
public class WidgetClickProxyActivity extends Activity {
    private static final String TAG = LogUtils.makeLogTag(WidgetClickProxyActivity.class);

    /**
     * If present, the component name of the extension to update upon being clicked.
     */
    private static final String EXTRA_UPDATE_EXTENSION
            = "com.google.android.apps.dashclock.extra.UPDATE_EXTENSION";

    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        if (hasFocus) {
            if (getIntent().hasExtra(EXTRA_UPDATE_EXTENSION)) {
                // Update extensions
                Intent extensionUpdateIntent = new Intent(this, DashClockService.class);
                extensionUpdateIntent.setAction(DashClockService.ACTION_UPDATE_EXTENSIONS);
                extensionUpdateIntent.putExtra(DashClockService.EXTRA_COMPONENT_NAME,
                        getIntent().getStringExtra(EXTRA_UPDATE_EXTENSION));
                extensionUpdateIntent.putExtra(DashClockService.EXTRA_UPDATE_REASON,
                        DashClockExtension.UPDATE_REASON_MANUAL);
                startService(extensionUpdateIntent);
            }

            try {
                startActivity(
                        Intent.parseUri(getIntent().getData().toString(), Intent.URI_INTENT_SCHEME)
                                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                                        | Intent.FLAG_ACTIVITY_TASK_ON_HOME
                                        | Intent.FLAG_ACTIVITY_CLEAR_TASK
                                        | Intent.FLAG_ACTIVITY_FORWARD_RESULT));
            } catch (URISyntaxException e) {
                LOGE(TAG, "Error parsing URI.", e);
            } catch (ActivityNotFoundException e) {
                LOGE(TAG, "Proxy'd activity not found.", e);
            } catch (SecurityException e) {
                LOGE(TAG, "Don't have permission to launch proxy'd activity.", e);
            }
            finish();
        }
        super.onWindowFocusChanged(hasFocus);
    }

    public static Intent wrap(Context context, Intent intent) {
        return wrap(context, intent, null);
    }

    public static Intent wrap(Context context, Intent intent, ComponentName alsoUpdateExtension) {
        return new Intent(context, WidgetClickProxyActivity.class)
                .setData(Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME)))
                .putExtra(EXTRA_UPDATE_EXTENSION, (alsoUpdateExtension == null)
                        ? null
                        : alsoUpdateExtension.flattenToString())
                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                        | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
    }

    public static Intent getTemplate(Context context) {
        return new Intent(context, WidgetClickProxyActivity.class)
                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                        | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
    }

    public static Intent getFillIntent(Intent clickIntent) {
        return getFillIntent(clickIntent, null);
    }

    public static Intent getFillIntent(Intent clickIntent, ComponentName alsoUpdateExtension) {
        return new Intent()
                .setData(Uri.parse(clickIntent.toUri(Intent.URI_INTENT_SCHEME)))
                .putExtra(EXTRA_UPDATE_EXTENSION, (alsoUpdateExtension == null)
                        ? null
                        : alsoUpdateExtension.flattenToString());
    }
}




Java Source Code List

com.example.dashclock.exampleextension.ExampleExtension.java
com.example.dashclock.exampleextension.ExampleSettingsActivity.java
com.google.android.apps.dashclock.BackupAgent.java
com.google.android.apps.dashclock.DashClockService.java
com.google.android.apps.dashclock.DaydreamService.java
com.google.android.apps.dashclock.ExtensionHost.java
com.google.android.apps.dashclock.ExtensionManager.java
com.google.android.apps.dashclock.ExtensionPackageChangeReceiver.java
com.google.android.apps.dashclock.HelpUtils.java
com.google.android.apps.dashclock.LogAttachmentProvider.java
com.google.android.apps.dashclock.LogUtils.java
com.google.android.apps.dashclock.PeriodicExtensionRefreshReceiver.java
com.google.android.apps.dashclock.Utils.java
com.google.android.apps.dashclock.WidgetClickProxyActivity.java
com.google.android.apps.dashclock.WidgetProvider.java
com.google.android.apps.dashclock.api.DashClockExtension.java
com.google.android.apps.dashclock.api.ExtensionData.java
com.google.android.apps.dashclock.api.VisibleExtension.java
com.google.android.apps.dashclock.api.package-info.java
com.google.android.apps.dashclock.calendar.CalendarExtension.java
com.google.android.apps.dashclock.calendar.CalendarSelectionPreference.java
com.google.android.apps.dashclock.calendar.CalendarSettingsActivity.java
com.google.android.apps.dashclock.configuration.AppChooserPreference.java
com.google.android.apps.dashclock.configuration.AppearanceConfig.java
com.google.android.apps.dashclock.configuration.BaseSettingsActivity.java
com.google.android.apps.dashclock.configuration.ColorPreference.java
com.google.android.apps.dashclock.configuration.ConfigurationActivity.java
com.google.android.apps.dashclock.configuration.ConfigureAdvancedFragment.java
com.google.android.apps.dashclock.configuration.ConfigureAppearanceFragment.java
com.google.android.apps.dashclock.configuration.ConfigureDaydreamFragment.java
com.google.android.apps.dashclock.configuration.ConfigureExtensionsFragment.java
com.google.android.apps.dashclock.configuration.DaydreamProxyActivity.java
com.google.android.apps.dashclock.gmail.GmailContract.java
com.google.android.apps.dashclock.gmail.GmailExtension.java
com.google.android.apps.dashclock.gmail.GmailSettingsActivity.java
com.google.android.apps.dashclock.nextalarm.NextAlarmExtension.java
com.google.android.apps.dashclock.nextalarm.NextAlarmSettingsActivity.java
com.google.android.apps.dashclock.phone.MissedCallsExtension.java
com.google.android.apps.dashclock.phone.SmsExtension.java
com.google.android.apps.dashclock.phone.TelephonyProviderConstants.java
com.google.android.apps.dashclock.render.DashClockRenderer.java
com.google.android.apps.dashclock.render.SimpleRenderer.java
com.google.android.apps.dashclock.render.SimpleViewBuilder.java
com.google.android.apps.dashclock.render.ViewBuilder.java
com.google.android.apps.dashclock.render.WidgetRemoteViewsFactoryService.java
com.google.android.apps.dashclock.render.WidgetRenderer.java
com.google.android.apps.dashclock.render.WidgetViewBuilder.java
com.google.android.apps.dashclock.ui.DragGripView.java
com.google.android.apps.dashclock.ui.EdgeEffectUtil.java
com.google.android.apps.dashclock.ui.PagerPositionStrip.java
com.google.android.apps.dashclock.ui.SimplePagedTabsHelper.java
com.google.android.apps.dashclock.ui.SwipeDismissListViewTouchListener.java
com.google.android.apps.dashclock.ui.UndoBarController.java
com.google.android.apps.dashclock.weather.CantGetWeatherException.java
com.google.android.apps.dashclock.weather.WeatherData.java
com.google.android.apps.dashclock.weather.WeatherExtension.java
com.google.android.apps.dashclock.weather.WeatherLocationPreference.java
com.google.android.apps.dashclock.weather.WeatherRetryReceiver.java
com.google.android.apps.dashclock.weather.WeatherSettingsActivity.java
com.google.android.apps.dashclock.weather.YahooWeatherApiClient.java
com.google.android.apps.dashclock.weather.YahooWeatherApiConfig.java