Skocz do zawartości
Szwed

Wysyłanie smsów do kilku numerów jednocześnie

    Rekomendowane odpowiedzi

    Szwed

    Witam, zamierzam napisać aplikację wysyłającą sms z określoną treścią treścią do kilku odbiorców wybranych wcześniej z zaznaczanej listy. W jaki sposób wysłać smsa do kilku odbiorców naraz, zależy mi żeby wysyłanie odbywało się w mojej aplikacji a nie żeby otwierała się domyślna aplikacja do smsów i żeby nie była to wiadomość grupowa tylko kilka pojedynczych wiadomości. Jak to rozwiązać? Do każdego elementu listy przypisać zmienną zawierającą string z numerem i potem w następnej zmiennej sumować wszystkie zaznaczone numery oddzielając je jakoś (jak?) i wpisać w poniższej metodzie?

    smsManager.sendTextMessage(number, null, text, null, null);

    Udostępnij tę odpowiedź


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

    A dlaczego nie wyślesz n sms w pętli? i w zmienną number wpiszesz kolejne elementy z listy telefonów?

    Udostępnij tę odpowiedź


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

    W sumie dobre rozwiązanie. A jeszcze powiesz mi w jaki sposób rozwiązać problem z wyboru kontaktu? Może być CheckBox? Jest jakiś sposób żeby do każdego elementu przypisać jakiś numer a program sam sobie potem pobierze tylko te zaznaczone? Bo robienie instrukcji do każdego elementu chyba odpada.

    ---------- Post dołączono o 23:14 ---------- Poprzedni post napisano o 20:57 ----------

    Kolejne pytanie, czy te wszystkie operacje (pętla, odczytywanie tablic, wysyłanie sms'ów) mogą się dziać po wciśnięciu przycisku czy trzeba tworzyć nową aktywność? Teraz mam wszystko w jednej aktywności i aplikacja się crashuje.

    Edytowane przez Szwed

    Udostępnij tę odpowiedź


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

    1) Może się dziać w jednej aktywności.

    2) Aplikacja się wysypuje i w logach leci błąd. Wklej go tutaj bo to wcale nie musi być spowodowane petlą czy czymś, a bez logów to my nic nie poradzimy.

    3) Możesz zrobić checkboxy na listView i wtedy zapisujesz pozycję, która jest zaznaczona. Potem na liście wybierasz tylko te elementy, których checkbox jest wybrany i odczytujesz do nich numery.

    Bardziej by to było pomocne gdybym widział kod ;) Tak bez kodu to średnio mogę pomóc bo nie wiadomo co chcesz zrobić i jak to robisz w tym momencie.

    Udostępnij tę odpowiedź


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

    Błędów jest dość sporo, domyślam się że pewnie że namieszałem coś w manifeście (jest to moja pierwsza samodzielna aplikacja na androida)

    09-19 14:32:51.702: E/AndroidRuntime(620): FATAL EXCEPTION: main
    09-19 14:32:51.702: E/AndroidRuntime(620): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{momo.kury/momo.kury.MainActivity}: java.lang.NullPointerException
    09-19 14:32:51.702: E/AndroidRuntime(620): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1983)
    09-19 14:32:51.702: E/AndroidRuntime(620): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
    09-19 14:32:51.702: E/AndroidRuntime(620): 	at android.app.ActivityThread.access$600(ActivityThread.java:130)
    09-19 14:32:51.702: E/AndroidRuntime(620): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
    09-19 14:32:51.702: E/AndroidRuntime(620): 	at android.os.Handler.dispatchMessage(Handler.java:99)
    09-19 14:32:51.702: E/AndroidRuntime(620): 	at android.os.Looper.loop(Looper.java:137)
    09-19 14:32:51.702: E/AndroidRuntime(620): 	at android.app.ActivityThread.main(ActivityThread.java:4745)
    09-19 14:32:51.702: E/AndroidRuntime(620): 	at java.lang.reflect.Method.invokeNative(Native Method)
    09-19 14:32:51.702: E/AndroidRuntime(620): 	at java.lang.reflect.Method.invoke(Method.java:511)
    09-19 14:32:51.702: E/AndroidRuntime(620): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
    09-19 14:32:51.702: E/AndroidRuntime(620): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
    09-19 14:32:51.702: E/AndroidRuntime(620): 	at dalvik.system.NativeStart.main(Native Method)
    09-19 14:32:51.702: E/AndroidRuntime(620): Caused by: java.lang.NullPointerException
    09-19 14:32:51.702: E/AndroidRuntime(620): 	at android.app.Activity.findViewById(Activity.java:1825)
    09-19 14:32:51.702: E/AndroidRuntime(620): 	at momo.kury.MainActivity.<init>(MainActivity.java:16)
    09-19 14:32:51.702: E/AndroidRuntime(620): 	at java.lang.Class.newInstanceImpl(Native Method)
    09-19 14:32:51.702: E/AndroidRuntime(620): 	at java.lang.Class.newInstance(Class.java:1319)
    09-19 14:32:51.702: E/AndroidRuntime(620): 	at android.app.Instrumentation.newActivity(Instrumentation.java:1053)
    09-19 14:32:51.702: E/AndroidRuntime(620): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1974)
    

    Udostępnij tę odpowiedź


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

    Akurat nie w manifeście tylko w layoutach i odwołaniach do kontrolek w nich.

    09-19 14:32:51.702: E/AndroidRuntime(620): Caused by: java.lang.NullPointerException
    09-19 14:32:51.702: E/AndroidRuntime(620): 	at android.app.Activity.findViewById(Activity.java:1825)
    

    Nie może znaleźć w mainActivity jakiegoś id.

    Prawdopodobnie coś co przypisujesz za pomocą findViewById, nie jest zdefiniowane w layoucie ustawianym przez setContentView()

    Udostępnij tę odpowiedź


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

    Posprawdzałem wszystkie id i się zgadzają. Dodać tutaj plik z layoutem i mainactivity?

    Udostępnij tę odpowiedź


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

    Byłoby miło.

    Musisz dać mainActivity minimum do 16 linijki. Bo błąd występuje w 16 linii.

    I plik layoutu też wrzuć.

    P.S. to już powinno byćw poprzedniej wypowiedzi ;)

    Udostępnij tę odpowiedź


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

    Domyślam się, że powinno jednak pisałem z telefonu i nie miałem dostępu do plików, chciałem się tylko upewnić co mam przygotować. I jeszcze moje pytanie, skąd wywnioskowałeś że błąd jest w 16 linijce? Bo nie mogę się tego dopatrzyć w logach (nie wiem na co patrzeć).

    mainActivity. 16 linijka to ta gdzie jest zmienna iloscAut.

    package momo.kury;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.telephony.SmsManager;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.CheckBox;
    import android.widget.EditText;
    import android.widget.Toast;
    
    
    public class MainActivity extends Activity {
    
    EditText iloscAut = (EditText) findViewById(R.id.iloscaut);
    EditText godzina = (EditText) findViewById(R.id.godzina);
    String[] tab = new String[8];
    
    CheckBox niedziela = (CheckBox) findViewById(R.id.niedziela);
    CheckBox daniel = (CheckBox) findViewById(R.id.daniel);
    CheckBox piotr = (CheckBox) findViewById(R.id.piotr);
    CheckBox mariusz = (CheckBox) findViewById(R.id.mariusz);
    CheckBox marcin = (CheckBox) findViewById(R.id.marcin);
    CheckBox mirek = (CheckBox) findViewById(R.id.mirek);
    CheckBox mateusz = (CheckBox) findViewById(R.id.mateusz);
    CheckBox artur = (CheckBox) findViewById(R.id.artur);
    CheckBox kuba = (CheckBox) findViewById(R.id.kuba);
    
    SmsManager smsManager = SmsManager.getDefault();
    
    Button wyslij = (Button) findViewById(R.id.wyslij);
    String dopisekNiedziela = "dzis";
    String stringDaniel;
    String stringPiotrek;
    String stringMariusz;
    String stringMarcin;
    String stringMirek;
    String stringMateusz;
    String stringArtur;
    String stringKuba; 

    Wkleiłem wszystkie deklaracje, potem już jest odczytywanie z checkBoxów.

    Plik layoutu:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
       xmlns:tools="http://schemas.android.com/tools"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:layout_marginBottom="-200dp"
       tools:context="${packageName}.${activityClass}" >
    
        <TextView
           android:id="@+id/textView1"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_alignParentLeft="true"
           android:layout_alignParentTop="true"
           android:text="@string/iloscAut" />
    
       <EditText
           android:id="@+id/iloscaut"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_alignParentLeft="true"
           android:layout_alignRight="@+id/textView1"
           android:layout_below="@+id/textView1"
           android:ems="10"
           android:inputType="number" >
    
           <requestFocus />
       </EditText>
    
       <TextView
           android:id="@+id/textView2"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_alignParentTop="true"
           android:layout_marginLeft="41dp"
           android:layout_toRightOf="@+id/textView1"
           android:text="@string/godzina" />
    
       <EditText
           android:id="@+id/godzina"
           android:layout_width="80dp"
           android:layout_height="wrap_content"
           android:layout_above="@+id/textView3"
           android:layout_alignLeft="@+id/textView2"
           android:layout_margin="-5dp"
           android:ems="10"
           android:inputType="time" />
    
       <TextView
           android:id="@+id/textView3"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_alignParentLeft="true"
           android:layout_below="@+id/iloscaut"
           android:layout_marginTop="38dp"
           android:text="@string/wybierzOdbiorcow" />
    
       <CheckBox
           android:id="@+id/niedziela"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_alignParentLeft="true"
           android:layout_below="@+id/iloscaut"
           android:text="@string/radioNiedziela"/> 
    
    
       <ScrollView
           android:id="@+id/scrollView1"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_alignParentLeft="true"
           android:layout_alignParentRight="true"
           android:layout_below="@+id/textView3" >
    
           <LinearLayout
               android:layout_width="match_parent"
               android:layout_height="match_parent"
               android:orientation="vertical" >
    
               <CheckBox
                   android:id="@+id/daniel"
                   android:layout_width="wrap_content"
                   android:layout_height="wrap_content"
                   android:text="@string/daniel" />
    
               <CheckBox
                   android:id="@+id/piotr"
                   android:layout_width="wrap_content"
                   android:layout_height="wrap_content"
                   android:text="@string/piotr" />
    
               <CheckBox
                   android:id="@+id/mariusz"
                   android:layout_width="wrap_content"
                   android:layout_height="wrap_content"
                   android:text="@string/mariusz" />
    
               <CheckBox
                   android:id="@+id/marcin"
                   android:layout_width="wrap_content"
                   android:layout_height="wrap_content"
                   android:text="@string/marcin" />
    
               <CheckBox
                   android:id="@+id/mirek"
                   android:layout_width="wrap_content"
                   android:layout_height="wrap_content"
                   android:text="@string/mirek" />
    
               <CheckBox
                   android:id="@+id/mateusz"
                   android:layout_width="wrap_content"
                   android:layout_height="wrap_content"
                   android:text="@string/mateusz" />
    
               <CheckBox
                   android:id="@+id/artur"
                   android:layout_width="wrap_content"
                   android:layout_height="wrap_content"
                   android:text="@string/artur" />
    
               <CheckBox
                   android:id="@+id/kuba"
                   android:layout_width="wrap_content"
                   android:layout_height="wrap_content"
                   android:text="@string/kuba" />
    
           </LinearLayout>
       </ScrollView>
    
       <Button
           android:id="@+id/wyslij"
           style="?android:attr/buttonStyleSmall"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_alignParentLeft="true"
           android:layout_alignParentRight="true"
           android:layout_below="@+id/scrollView1"
           android:text="@string/button" />
    
    
    
    </RelativeLayout>

    Udostępnij tę odpowiedź


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

    Tutaj znajdziesz, w której linii masz błąd:

    09-19 14:32:51.702: E/AndroidRuntime(620): Caused by: java.lang.NullPointerException
    09-19 14:32:51.702: E/AndroidRuntime(620): 	at android.app.Activity.findViewById(Activity.java:1825)
    09-19 14:32:51.702: E/AndroidRuntime(620): 	at momo.kury.MainActivity.<init>(MainActivity.java:16)

    Ostatnia linia w nawiasie mówi, że błąd jest w MainActivity w linijce 16.

    A teraz przejdźmy do sedna. Gdzie znalazłeś kurs, w którym robi się takie herezje? Bo mam ochotę napisać do autora żeby nie wprowadzał takiego czegoś do obiegu. Jeśli jest to twoja radosna twórczość własna to proponuję przeczytać kurs a dokładnie cykl życia aktywności. Gdzie masz coś takiego jak onCreate(), w którym umieszczać setContentView() do layoutu, który przedstawiłeś?

    Dopiero po umieszczeniu widoku powinny się znaleźć te wszystkie rzeczy, które Ty sobie tam napisałeś. Czyli kod mniej więcej powinien wyglądać tak.

    EditText iloscAut = (EditText) findViewById(R.id.iloscaut);
    EditText godzina;
    String[] tab = new String[8];
    
    CheckBox niedziela ;
    CheckBox daniel;
    CheckBox piotr;
    CheckBox mariusz;
    CheckBox marcin;
    CheckBox mirek;
    
    String dopisekNiedziela = "dzis";
    String stringDaniel;
    String stringPiotrek;
    String stringMariusz;
    String stringMarcin;
    String stringMirek;
    String stringMateusz;
    String stringArtur;
    String stringKuba;
    
    SmsManager smsManager = SmsManager.getDefault();
    
    Button wyslij;
           onCreate(savedInstance){
              setContentView(jakis_Layout);
               godzina = (EditText) findViewById(R.id.godzina);
    
    niedziela = (CheckBox) findViewById(R.id.niedziela);
    daniel = (CheckBox) findViewById(R.id.daniel);
     piotr = (CheckBox) findViewById(R.id.piotr);
     mariusz = (CheckBox) findViewById(R.id.mariusz);
    marcin = (CheckBox) findViewById(R.id.marcin);
     mirek = (CheckBox) findViewById(R.id.mirek);
     mateusz = (CheckBox) findViewById(R.id.mateusz);
     artur = (CheckBox) findViewById(R.id.artur);
     kuba = (CheckBox) findViewById(R.id.kuba);
           }
    

    Pisane z palca więc mogą być błędy. Jednak reasumując findViewById powinno być wywołane po ustaiweniu layouta a nie przed onCreate. Tam to jest nullem i on nie wie co ma ustawić. Przeczytaj o podstawach programowania na androida i javy.

    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ę.

    x