diff options
author | Treehugger Robot <treehugger-gerrit@google.com> | 2018-01-30 05:11:53 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2018-01-30 05:11:53 +0000 |
commit | a6b96247b1348dd6316fb0b5355c980883765530 (patch) | |
tree | 9328cb3c85134aeb3837d6a3126d56d93a6a9cbe | |
parent | f27f1bd028abfcac714cf5aed6bbbab8d21077a6 (diff) | |
parent | 9f16e171d04fbafe042d83b6bfaf5309f886f0e1 (diff) |
Merge changes I29d00f22,I9337e226
* changes:
Added a hack for NUI because of a dependency cycle.
Use application context when fetching shared prefs.
-rw-r--r-- | java/com/android/dialer/app/DialtactsActivity.java | 7 | ||||
-rw-r--r-- | java/com/android/dialer/app/MainComponent.java | 95 | ||||
-rw-r--r-- | java/com/android/dialer/app/res/drawable-xxxhdpi/nui_launcher_icon.png | bin | 0 -> 5554 bytes | |||
-rw-r--r-- | java/com/android/dialer/app/res/values/strings.xml | 4 | ||||
-rw-r--r-- | java/com/android/voicemail/impl/OmtpService.java | 4 | ||||
-rw-r--r-- | java/com/android/voicemail/impl/VisualVoicemailPreferences.java | 2 |
6 files changed, 104 insertions, 8 deletions
diff --git a/java/com/android/dialer/app/DialtactsActivity.java b/java/com/android/dialer/app/DialtactsActivity.java index 4b0384ea5..23f4d403c 100644 --- a/java/com/android/dialer/app/DialtactsActivity.java +++ b/java/com/android/dialer/app/DialtactsActivity.java @@ -119,8 +119,6 @@ import com.android.dialer.logging.Logger; import com.android.dialer.logging.LoggingBindings; import com.android.dialer.logging.ScreenEvent; import com.android.dialer.logging.UiAction; -import com.android.dialer.main.Main; -import com.android.dialer.main.MainComponent; import com.android.dialer.p13n.inference.P13nRanking; import com.android.dialer.p13n.inference.protocol.P13nRanker; import com.android.dialer.p13n.inference.protocol.P13nRanker.P13nRefreshCompleteListener; @@ -798,7 +796,7 @@ public class DialtactsActivity extends TransactionSafeActivity Logger.get(this).logScreenView(ScreenEvent.Type.SETTINGS, this); return true; } else if (resId == R.id.menu_new_ui_launcher_shortcut) { - MainComponent.get(this).getMain().createNewUiLauncherShortcut(this); + MainComponent.createNewUiLauncherShortcut(this); return true; } return false; @@ -1752,9 +1750,8 @@ public class DialtactsActivity extends TransactionSafeActivity simulatorMenuItem.setVisible(false); } - Main dialtacts = MainComponent.get(context).getMain(); menu.findItem(R.id.menu_new_ui_launcher_shortcut) - .setVisible(dialtacts.isNewUiEnabled(context)); + .setVisible(MainComponent.isNewUiEnabled(context)); super.show(); } diff --git a/java/com/android/dialer/app/MainComponent.java b/java/com/android/dialer/app/MainComponent.java new file mode 100644 index 000000000..b19ad908e --- /dev/null +++ b/java/com/android/dialer/app/MainComponent.java @@ -0,0 +1,95 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * 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.android.dialer.app; + +import android.annotation.TargetApi; +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.content.pm.PackageManager; +import android.os.Build; +import android.os.Build.VERSION_CODES; +import android.support.v4.content.pm.ShortcutInfoCompat; +import android.support.v4.content.pm.ShortcutManagerCompat; +import android.support.v4.graphics.drawable.IconCompat; +import com.android.dialer.configprovider.ConfigProviderBindings; + +/** This class is a copy of dialer.main.impl.MainImpl to get around a dependency issue. */ +public class MainComponent { + + private static final String SHORTCUT_KEY = "nui_launcher_shortcut"; + + public static boolean isNewUiEnabled(Context context) { + return ConfigProviderBindings.get(context).getBoolean("is_nui_shortcut_enabled", false); + } + + public static void createNewUiLauncherShortcut(Context context) { + enableComponent(context); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + createLauncherShortcutO(context); + } else { + createLauncherShortcutPreO(context); + } + } + + /** + * Enables the NUI activity component. By default the component is disabled and can't be accessed. + * Once the component has been enabled the user will get an option to use the new UI to handle + * DIAL (and other) intents. + */ + private static void enableComponent(Context context) { + context + .getPackageManager() + .setComponentEnabledSetting( + new ComponentName(context, "com.android.dialer.main.impl.MainActivity"), + PackageManager.COMPONENT_ENABLED_STATE_ENABLED, + PackageManager.DONT_KILL_APP); + } + + @TargetApi(VERSION_CODES.O) + private static void createLauncherShortcutO(Context context) { + ShortcutInfoCompat shortcutInfo = + new ShortcutInfoCompat.Builder(context, SHORTCUT_KEY) + .setIcon(IconCompat.createWithResource(context, R.drawable.nui_launcher_icon)) + .setIntent(getIntent(context)) + .setShortLabel(context.getString(R.string.nui_shortcut_name)) + .build(); + ShortcutManagerCompat.requestPinShortcut(context, shortcutInfo, null); + } + + private static void createLauncherShortcutPreO(Context context) { + Intent intent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT"); + intent.putExtra( + Intent.EXTRA_SHORTCUT_ICON, + Intent.ShortcutIconResource.fromContext(context, R.drawable.nui_launcher_icon)); + intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, context.getString(R.string.nui_shortcut_name)); + intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, getIntent(context)); + context.sendBroadcast(intent); + } + + /** + * @param context Context of the application package implementing MainActivity class. + * @return intent for MainActivity.class + */ + public static Intent getIntent(Context context) { + Intent intent = new Intent(); + intent.setComponent(new ComponentName(context, "com.android.dialer.main.impl.MainActivity")); + intent.setAction(Intent.ACTION_VIEW); + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + return intent; + } +} diff --git a/java/com/android/dialer/app/res/drawable-xxxhdpi/nui_launcher_icon.png b/java/com/android/dialer/app/res/drawable-xxxhdpi/nui_launcher_icon.png Binary files differnew file mode 100644 index 000000000..7845ebca4 --- /dev/null +++ b/java/com/android/dialer/app/res/drawable-xxxhdpi/nui_launcher_icon.png diff --git a/java/com/android/dialer/app/res/values/strings.xml b/java/com/android/dialer/app/res/values/strings.xml index 5554059fd..d4f3f8180 100644 --- a/java/com/android/dialer/app/res/values/strings.xml +++ b/java/com/android/dialer/app/res/values/strings.xml @@ -716,4 +716,8 @@ <!-- If a user deletes a call that has attachments (photo, message, ect) bundled with it, they need to be told that they need to go to the SMS app to delete the attachments. [CHAR LIMIT=NONE] --> <string name="multiple_ec_data_deleted">Calls deleted. View and delete attachments shared during calls in Messages.</string> + + <!-- Name of launcher shortcut for the new UI main activity. + TODO(38502365): Remove this once we're ready to launch the new UI. --> + <string translatable="false" name="nui_shortcut_name">Phone NUI</string> </resources> diff --git a/java/com/android/voicemail/impl/OmtpService.java b/java/com/android/voicemail/impl/OmtpService.java index 4e8860c02..e10a27571 100644 --- a/java/com/android/voicemail/impl/OmtpService.java +++ b/java/com/android/voicemail/impl/OmtpService.java @@ -197,14 +197,14 @@ public class OmtpService extends VisualVoicemailService { } private static void setShuttingDown(Context context, boolean value) { - PreferenceManager.getDefaultSharedPreferences(context) + PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext()) .edit() .putBoolean(IS_SHUTTING_DOWN, value) .apply(); } private static boolean isShuttingDown(Context context) { - return PreferenceManager.getDefaultSharedPreferences(context) + return PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext()) .getBoolean(IS_SHUTTING_DOWN, false); } } diff --git a/java/com/android/voicemail/impl/VisualVoicemailPreferences.java b/java/com/android/voicemail/impl/VisualVoicemailPreferences.java index 72506eb93..1d7204e94 100644 --- a/java/com/android/voicemail/impl/VisualVoicemailPreferences.java +++ b/java/com/android/voicemail/impl/VisualVoicemailPreferences.java @@ -31,7 +31,7 @@ public class VisualVoicemailPreferences extends PerAccountSharedPreferences { super( context, phoneAccountHandle, - PreferenceManager.getDefaultSharedPreferences(context), + PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext()), "visual_voicemail_"); } } |