NotificationsPreference.java revision 4d48e820ac6d77dea33df9b5c432100345266972
14d48e820ac6d77dea33df9b5c432100345266972Tony Mantler/* 24d48e820ac6d77dea33df9b5c432100345266972Tony Mantler * Copyright (C) 2015 The Android Open Source Project 34d48e820ac6d77dea33df9b5c432100345266972Tony Mantler * 44d48e820ac6d77dea33df9b5c432100345266972Tony Mantler * Licensed under the Apache License, Version 2.0 (the "License"); 54d48e820ac6d77dea33df9b5c432100345266972Tony Mantler * you may not use this file except in compliance with the License. 64d48e820ac6d77dea33df9b5c432100345266972Tony Mantler * You may obtain a copy of the License at 74d48e820ac6d77dea33df9b5c432100345266972Tony Mantler * 84d48e820ac6d77dea33df9b5c432100345266972Tony Mantler * http://www.apache.org/licenses/LICENSE-2.0 94d48e820ac6d77dea33df9b5c432100345266972Tony Mantler * 104d48e820ac6d77dea33df9b5c432100345266972Tony Mantler * Unless required by applicable law or agreed to in writing, software 114d48e820ac6d77dea33df9b5c432100345266972Tony Mantler * distributed under the License is distributed on an "AS IS" BASIS, 124d48e820ac6d77dea33df9b5c432100345266972Tony Mantler * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134d48e820ac6d77dea33df9b5c432100345266972Tony Mantler * See the License for the specific language governing permissions and 144d48e820ac6d77dea33df9b5c432100345266972Tony Mantler * limitations under the License 154d48e820ac6d77dea33df9b5c432100345266972Tony Mantler */ 164d48e820ac6d77dea33df9b5c432100345266972Tony Mantler 174d48e820ac6d77dea33df9b5c432100345266972Tony Mantlerpackage com.android.tv.settings.device.apps; 184d48e820ac6d77dea33df9b5c432100345266972Tony Mantler 194d48e820ac6d77dea33df9b5c432100345266972Tony Mantlerimport android.app.INotificationManager; 204d48e820ac6d77dea33df9b5c432100345266972Tony Mantlerimport android.app.NotificationManager; 214d48e820ac6d77dea33df9b5c432100345266972Tony Mantlerimport android.content.Context; 224d48e820ac6d77dea33df9b5c432100345266972Tony Mantlerimport android.os.RemoteException; 234d48e820ac6d77dea33df9b5c432100345266972Tony Mantlerimport android.support.v7.preference.CheckBoxPreference; 244d48e820ac6d77dea33df9b5c432100345266972Tony Mantlerimport android.util.Log; 254d48e820ac6d77dea33df9b5c432100345266972Tony Mantler 264d48e820ac6d77dea33df9b5c432100345266972Tony Mantlerimport com.android.settingslib.applications.ApplicationsState; 274d48e820ac6d77dea33df9b5c432100345266972Tony Mantlerimport com.android.tv.settings.R; 284d48e820ac6d77dea33df9b5c432100345266972Tony Mantler 294d48e820ac6d77dea33df9b5c432100345266972Tony Mantlerpublic class NotificationsPreference extends CheckBoxPreference { 304d48e820ac6d77dea33df9b5c432100345266972Tony Mantler private static final String TAG = "NotificationsPreference"; 314d48e820ac6d77dea33df9b5c432100345266972Tony Mantler 324d48e820ac6d77dea33df9b5c432100345266972Tony Mantler private final INotificationManager mNotificationManager; 334d48e820ac6d77dea33df9b5c432100345266972Tony Mantler private final ApplicationsState.AppEntry mEntry; 344d48e820ac6d77dea33df9b5c432100345266972Tony Mantler 354d48e820ac6d77dea33df9b5c432100345266972Tony Mantler public NotificationsPreference(Context context, ApplicationsState.AppEntry entry) { 364d48e820ac6d77dea33df9b5c432100345266972Tony Mantler super(context); 374d48e820ac6d77dea33df9b5c432100345266972Tony Mantler mEntry = entry; 384d48e820ac6d77dea33df9b5c432100345266972Tony Mantler 394d48e820ac6d77dea33df9b5c432100345266972Tony Mantler mNotificationManager = NotificationManager.getService(); 404d48e820ac6d77dea33df9b5c432100345266972Tony Mantler 414d48e820ac6d77dea33df9b5c432100345266972Tony Mantler refresh(); 424d48e820ac6d77dea33df9b5c432100345266972Tony Mantler } 434d48e820ac6d77dea33df9b5c432100345266972Tony Mantler 444d48e820ac6d77dea33df9b5c432100345266972Tony Mantler public void refresh() { 454d48e820ac6d77dea33df9b5c432100345266972Tony Mantler setTitle(R.string.device_apps_app_management_notifications); 464d48e820ac6d77dea33df9b5c432100345266972Tony Mantler 474d48e820ac6d77dea33df9b5c432100345266972Tony Mantler try { 484d48e820ac6d77dea33df9b5c432100345266972Tony Mantler super.setChecked( 494d48e820ac6d77dea33df9b5c432100345266972Tony Mantler mNotificationManager.areNotificationsEnabledForPackage(mEntry.info.packageName, 504d48e820ac6d77dea33df9b5c432100345266972Tony Mantler mEntry.info.uid)); 514d48e820ac6d77dea33df9b5c432100345266972Tony Mantler } catch (RemoteException e) { 524d48e820ac6d77dea33df9b5c432100345266972Tony Mantler Log.d(TAG, "Remote exception while checking notifications for package " 534d48e820ac6d77dea33df9b5c432100345266972Tony Mantler + mEntry.info.packageName, e); 544d48e820ac6d77dea33df9b5c432100345266972Tony Mantler } 554d48e820ac6d77dea33df9b5c432100345266972Tony Mantler } 564d48e820ac6d77dea33df9b5c432100345266972Tony Mantler 574d48e820ac6d77dea33df9b5c432100345266972Tony Mantler @Override 584d48e820ac6d77dea33df9b5c432100345266972Tony Mantler public void setChecked(boolean checked) { 594d48e820ac6d77dea33df9b5c432100345266972Tony Mantler if (setNotificationsEnabled(checked)) { 604d48e820ac6d77dea33df9b5c432100345266972Tony Mantler super.setChecked(checked); 614d48e820ac6d77dea33df9b5c432100345266972Tony Mantler } 624d48e820ac6d77dea33df9b5c432100345266972Tony Mantler } 634d48e820ac6d77dea33df9b5c432100345266972Tony Mantler 644d48e820ac6d77dea33df9b5c432100345266972Tony Mantler private boolean setNotificationsEnabled(boolean enabled) { 654d48e820ac6d77dea33df9b5c432100345266972Tony Mantler boolean result = true; 664d48e820ac6d77dea33df9b5c432100345266972Tony Mantler if (isChecked() != enabled) { 674d48e820ac6d77dea33df9b5c432100345266972Tony Mantler try { 684d48e820ac6d77dea33df9b5c432100345266972Tony Mantler mNotificationManager.setNotificationsEnabledForPackage( 694d48e820ac6d77dea33df9b5c432100345266972Tony Mantler mEntry.info.packageName, mEntry.info.uid, enabled); 704d48e820ac6d77dea33df9b5c432100345266972Tony Mantler } catch (android.os.RemoteException ex) { 714d48e820ac6d77dea33df9b5c432100345266972Tony Mantler result = false; 724d48e820ac6d77dea33df9b5c432100345266972Tony Mantler } 734d48e820ac6d77dea33df9b5c432100345266972Tony Mantler } 744d48e820ac6d77dea33df9b5c432100345266972Tony Mantler return result; 754d48e820ac6d77dea33df9b5c432100345266972Tony Mantler } 764d48e820ac6d77dea33df9b5c432100345266972Tony Mantler 774d48e820ac6d77dea33df9b5c432100345266972Tony Mantler} 78