2014-11-18 2 views
0

Я хочу использовать блокировку бодрствования, чтобы держать экран на виджете, нажав на рабочем столеКак использовать getSystemService в виджетах на Android?

кода здесь:

final PowerManager pm = (PowerManager)getSystemService(context.POWER_SERVICE); 
PowerManager.WakeLock mWakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE, ""); 
mWakeLock.acquire(); 

, но он говорит getSystemService не может быть использован , если он не «расширяет деятельность».

пожалуйста, помогите

+0

У вас есть контекст? –

+0

Во-первых, вы должны изучить основы ООП ... Метод существует в классе. Далее изучите фреймворк android ... Какой класс имеет этот метод и как получить его экземпляр в классе виджетов – Selvin

ответ

0

При расширении AppWidgetProvider все методы имеют Context переданный объект.

Метод getSystemService является частью Context класса в Android, так что вы сможете получить его, используя принятый в контексте.

См: Context and getSystemService on Android Developers

Пример кода:

public class TestWidget extends AppWidgetProvider { 

    @Override 
    public void onEnabled(Context context) { 
     super.onEnabled(context); 
     PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); 
    } 
} 

Пример кода использует метод onEnabled в качестве примера, но это также работает в других методов, таких как onDisabled, onUpdate, onAppWidgetOptionsChanged т.д.

+0

, спасибо, много он работает – PhilipNS

0

Вам нужно будет использовать соответствующую context для использования getSystemService в классе неактивности или Widget.

final PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE); //your context here 
PowerManager.WakeLock mWakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE, ""); 
mWakeLock.acquire(); 

И использовать верблюд случае Context для Context.POWER_SERVICE

Надеется, что это помогает.

Смежные вопросы