Форум программистов, компьютерный форум CyberForum.ru

Метод onReceive в BroadcastReceiver - Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Android Ввод только букв в EditText http://www.cyberforum.ru/android-dev/thread1202319.html
Здравствуйте, мне нужно вводить в EditText только буквы (т.е. отсетить цифры и спец символы), есть ли готовый такой фильтр к android:inputType или нужно самому в коде это реализовывать?
Android Работа с активностями Здравствуйте. Только учусь... :))) Есть 3 активности. Для передачи данных между ними использую просто класс со статическими полями. Поля являются ссылками на объекты. Тоесть первая активность создала объект и присвоила ссылку в статическое свойство класса. Вторая и третья активность использует эту ссылку. Может в таком способе есть какие подводные камни, не знаю, но надо передать именно... http://www.cyberforum.ru/android-dev/thread1202282.html
Android Конвертировать из int в date
Есть 3 переменных типа int: часы, минуты и день недели. в таком формате: 6, 47, 2. Нужно конвертировать из них в дату, а потом получить из даты время в миллисекундах в int. Спасибо. Добавлено через 1 час 6 минут и да, забыл сказать, дату нужно ближайшую подходящую, то есть если указан вторник, до дата будет следующий вторник.
Android Получить данные о сети: IP роутера к которому подключен телефон, MAC
Как получить данные о сети. а именно - IP роутера к которому подключен телефон, MAC и т.д.
Android Slidingmenu http://www.cyberforum.ru/android-dev/thread1201870.html
Ребята, Еще есть вопрос по поводу slidingmenu, использую https://github.com/jfeinstein10/SlidingMenu Вопрос в следующем, кто работал, подскажите. Меню выдвигается только тогда - когда я "двигаю" от края экрана. Как сделать, чтобы меню выезжало при "движении" в любой части экрана, т.е. если я к примеру с центра экрана провел пальце в второну - то чтобы меню выдвигалось. Сейчас же оно...
Android Google maps на эмуляторе и на телефоне Уважаемые, Подскажите с такой вот проблемой. В приложение используются карыт гугл. В Эмуляторе все ок - карта прогружается, все нормально. Но когда ставлю приложение на телефон - сама карта не грузится, т.е. все появляется, но карта не прогружается (как будто интернета нет на телефоне) С чем связана данная проблема? Спасибо! Добавлено через 2 часа 56 минут подробнее

Показать сообщение отдельно
Zwei
2 / 2 / 0
Регистрация: 18.10.2013
Сообщений: 14

Метод onReceive в BroadcastReceiver - Android

08.06.2014, 16:38. Просмотров 838. Ответов 0
Метки (Все метки)

Есть класс
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
public class Receiver extends BroadcastReceiver {
 
    Alarm nextAlarm;
    Context context;
    MainActivity mainActivity;
 
    Handler handler;
 
    public void setContext(Context context) {
        this.context = context;
        mainActivity = (MainActivity) context;
    }
 
    private void setNextAlarm() {
        cancelAlarm(context);
        nextAlarm = null;
        long minTime = Long.MAX_VALUE;
        for (Alarm alarm: mainActivity.alarms){
            if (alarm.getState() && alarm.getWhenAlarm() < minTime){
                if (alarm.getWhenAlarm() < System.currentTimeMillis())
                    alarm.setWhenAlarm();
                nextAlarm = alarm;
                minTime = alarm.getWhenAlarm();
            }
        }
        if (nextAlarm != null){
            setOnetimeTimer(context);
        }
 
    }
    public void setAlarms() {
        setNextAlarm();
    }
 
    public void setHandler(){
        handler = new Handler(){
            @Override
            public void handleMessage(Message msg) {
                Log.d("MY_TAG", "Хэндлер сработал");
                if (!nextAlarm.haveDays())
                    mainActivity.alarms.get(mainActivity.alarms.indexOf(nextAlarm)).setState(false);
                mainActivity.remakeList();
                setAlarms();
                SimpleDateFormat sdf = new SimpleDateFormat("EEE\thh:mm");
                AlertDialog.Builder adb = new AlertDialog.Builder(context);
                final MediaPlayer mp = new MediaPlayer();
                adb.setTitle("Сработал будильник");
                adb.setMessage(sdf.format(System.currentTimeMillis()));
                adb.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        mp.stop();
                        dialogInterface.dismiss();
                    }
                });
                try {
                    mp.setDataSource(nextAlarm.getPath());
                    mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
                    mp.setLooping(true);
                    mp.prepareAsync();
                    mp.start();
                } catch (IOException ex){
                    Log.d("MY_TAG", "Файл не найден");
                }
                adb.show();
            }
        };
    }
 
    @Override
    public void onReceive(Context context, Intent intent) {
        PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
        PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MY_TAG");
        wl.acquire();
        Log.d("MY_TAG", "Сработал ресивер!");
        if (handler.sendEmptyMessage(0))
            Log.d("MY_TAG", "Отправка сообщения хэндлеру!");
        wl.release();
    }
 
 
    private void setOnetimeTimer(Context context){
        AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
        Intent intent = new Intent(context, Receiver.class);
        intent.putExtra("MY_ALARM", true);
        long alarmTime= nextAlarm.getWhenAlarm();
        PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0);
        am.set(AlarmManager.RTC_WAKEUP, alarmTime, pi);
        SimpleDateFormat sdf = new SimpleDateFormat("hh:mm EEE W d");
        Log.d("MY_TAG", "Установлен след.будильник на\t"+sdf.format(nextAlarm.getWhenAlarm()));
    }
 
 
    private void cancelAlarm(Context context)
    {
        Intent intent = new Intent(context, Receiver.class);
        PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, 0);
        AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
        alarmManager.cancel(sender);
    }
 
}
Все поля инициализируются из Activity при помощи методов
receiver.setContext(this);
receiver.setAlarms();
receiver.setHandler();

При обращении к полю класса из onReceive ловлю NullPointerException, что я упускаю?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 01:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru