Skocz do zawartości
oriechmar

aplikacja, która działa nawet po jej wyłączeniu (systemowa)

    Rekomendowane odpowiedzi

    Witam

     

    Jestem tu nowy i witam wszystkich :)

     

    Chciałbym napisać aplikację, która działałaby cały czas, czyli np. uruchamiam aplikację, ustawiam odpowiednie opcje  i po jej zamknęciu

    android reaguje na te opcje (dotyczy to np. sms'ów, mms'ów, połączeń). Czy jest taka możliwość?

     

    Chciałbym aby działało to również po restarcie telefonu, jeśli są jakieś opcje ustawione, to aby działały one bez ponownego wchodzenia

    w aplikację.

     

    Pytanie brzmi, czy muszę coś ustawić w projekcie samej aplikacji czy też wbić jakiś dodatkowy kod w samej aplikacji?

     

    Pozdrawiam

    Marcin

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Coderoid

    Na zdarzenia takie jak:

    sms

    mms

    połaczenie

    wznowienie systemu 

     

    są broadcast receiver'y. One potem uruchamiają service który wykonuje żądane operacje. 

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Aha, a czy jak mam napisaną już zwykłą aplikację (na razie tylko na sms'y) to czy mogę ją dostosować do tego broadcast receiver'y?

    Czy muszę stworzyć jako nowy projekt ale z innymi ustawieniami (choć w sumie to nie widziałem tam takich opcji przy tworzeniu nowego projektu)?

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Coderoid

    Nie rozumiem

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Chodziło mi o to czy wystarczy zmienić coś tylko w ustawieniach samego projektu aby przyjął odpowiednie wartości ale chyba jednak nie :(
     
    Widzę że aplikacja powinna przyjąć następują formę:

    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    
    public class MyReceiver extends BroadcastReceiver {
    
            @Override
            public void onReceive(Context context, Intent intent) {
                    // assumes WordService is a registered service
                    Intent intent = new Intent(context, WordService.class);
                    context.startService(intent);
            }
    }
    

    Czy idę dobrym torem? muszę przerobić istniejący kod projektu w taki właśnie sposób? Bo obecnie mam: extends Activity

    Edytowane przez oriechmar

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Coderoid

    Jeśli już dotarłes do implementacji broadcast receivera to jest tam też napewno jak go rejestrować w systemie. Na dodatek będziesz. musiał mieć Service. Activity nie bardzo ma coś do tego bo to zupełnie inny komponent

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    OK, dziękuję bardzo za pomoc. Postaram się rozgryźć ten broadcast receiver i przerobić istniejący projekt tak aby opierał się właśnie o niego.

     

    Jak już będę coś wiedział to piwko oczywiście postawię :)

    (teraz mam przeprowadzkę i ograniczony czas na grzebanie przy tym)

     

    Pozdrawiam

    Marcin

    Edytowane przez oriechmar

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Witam ponownie, poczytałem na temat Broadcast Receivers i ta "cegiełka" służy do odbierania/wysyłania sms'ów itd.

    Moja aplikacja sms'ów nie odbiera tylko sprawdza czy zostały odczytane, więc nie bardzo Broadcast Receivers się tu sprawdzi.

     

    Sprawdzenie stanu sms'ów realizuję kodem, który jest wbity w timera:

    Uri uriSMSURI = Uri.parse("content://sms/inbox");
    Cursor cur = getContentResolver().query(uriSMSURI, null, "read = 0", null, null);
        					
    while (cur.moveToNext()){
       zm_status_sms = 1;	// **** są wiadomości nie odczytane
    }
    if(zm_status_sms > 0) {
       Toast.makeText(getApplicationContext(), "NIE PRZECZYTANE", Toast.LENGTH_LONG).show();
       zm_mp.start();	//uruchomienie dzwonka
    }
    else{
       Toast.makeText(getApplicationContext(), "PRZECZYTANE", Toast.LENGTH_LONG).show();
    }
    

    Po zamknięciu aplikacji timer sprawdzający przestaje działać i dzwonek nie jest uruchamiany gdy jest nie przeczytany sms.

    Wyczytałem że "cegiełka" : Services realizuje operacje nawet po zamknięciu aplikacji.

     

    Pytanie czy Services jest dobrym rozwiązaniem czy też jest jakieś lepsze rozwiązanie?

     

    Pozdrawiam

    Marcin

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Coderoid
    Moja aplikacja sms'ów nie odbiera tylko sprawdza czy zostały odczytane

     

    A to racja. Broadcast się tutaj nie przyda, ale Service i wspomniany Alarm Manager owszem. Jeszcze możesz popatrzeć za JobSchedulerem (to samo co Alarm Manager tylko nowsze i zalecane przez google). 

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

    Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

    Zarejestruj nowe konto

    Załóż nowe konto. To bardzo proste!

    Zarejestruj się

    Zaloguj się

    Posiadasz już konto? Zaloguj się poniżej.

    Zaloguj się

    • Ostatnio przeglądający   0 użytkowników

      Brak zarejestrowanych użytkowników przeglądających tę stronę.