2010-06-03 13 views
5

Zrobiłem swoje badania i znalazłem wielu ludzi uruchamiających aplikację sms z zamiarem. Chodzi o to, że ludzie zwykle robią to tylko w przypadku wiadomości wychodzących.Uruchom aplikację sms Activity @ ConversarionList.class z mojej własnej aplikacji.

Aktualnie wyświetlam liczbę nieprzeczytanych SMSów na mojej aplikacji, ale nie mogę uzyskać prawidłowego zamiaru.

Na każdy spróbować uzyskać ten sam wynik, to uruchamia aplikację, ale na nowy sms ...

Mój obecny zamiar wygląda to

Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setData(Uri.parse("sms:")); 
startActivity(intent); 

i jego wynikiem jest:

Android sms Aplication form http://img291.imageshack.us/img291/1330/22012196.png

  • EDIT: Para -> Aby
  • escribir mensaje -> Napisz wiadomość
  • Enviar -> Wyślij

Mam nadzieję, że jestem wystarczająco jasno na ten temat.

Pytanie brzmi:

Jak mogę przejść do skrzynki odbiorczej aplikacji sms na androida za pośrednictwem intencyjny?


EDIT: Chcę tylko powtórzyć to:

startActivity(new Intent(this, ConversationList.class)); 

Wich Wziąłem od: http://www.google.com/codesearch/p?hl=en#dpDz7Q08o9c/src/com/android/mms/ui/ComposeMessageActivity.java @LINE: 2028

na własnych aplikacji. Ale nie mogę tego zmusić do działania.

Odpowiedz

2

Co to jest SetClassName?

Aby rozpocząć zajęcia znajdujące się poza bieżącą aplikacją, musimy zadeklarować coś w stylu "Pełna ścieżka" ...

Aby otworzyć domyślny @ConversationList sms aplikacji musimy to zrobić:

Intent intent = new Intent(Intent.ACTION_MAIN); 
intent.addCategory(Intent.CATEGORY_LAUNCHER); 
intent.setClassName("com.android.mms", "com.android.mms.ui.ConversationList"); 

Źródło:

1
  1. Najpierw przyjrzyj się różnym intencjom i opcjom lanch. Możesz zobaczyć moją odpowiedź na similar question. Twój kod wywoła coś za pomocą funkcji StartActivityForResult(). Co to jest trudniejsze pytanie.

  2. Jeśli masz szczęście, możesz znaleźć INTENTA z aplikacji komunikatów o statusie. Prawdopodobnie nie, ponieważ nie ma gwarancji, że telefon będzie używał domyślnego systemu. Wszakże po odebraniu wiadomości SMS jest umieszczany w bazie danych komunikatów i jest "nowy" tylko zgodnie z logiką aplikacji do przesyłania wiadomości. Ta baza danych nie jest udostępniana ze względów bezpieczeństwa. Możesz wypowiedzieć się na temat tego feature request.

  3. Możesz napisać własną aplikację, która chwyta intencję nowego SMS-a, a następnie może ją przesłać dalej. Zobacz to somewhat old tutorial.

Powodzenia! Daj nam znać, jeśli robisz postępy.

+0

Uważam, że mówimy tu o dwóch różnych rzeczach. Po prostu chcę powtórzyć to: startActivity (new Intent (this, ConversationList.class)); Wich Wziąłem od: http://www.google.com/codesearch/p?hl=en#dpDz7Q08o9c/src/com/android/mms/ui/ComposeMessageActivity.java @LINE: 2028 na własnych aplikacji . Ale nie mogę tego zmusić do działania. Dzięki zaawansowanym. –

+0

Niestety, nie rozumiem twojego pytania. –

+0

Zrobiłem aplikację, która pokazuje użytkownikowi ilość nieprzeczytanych SMS-ów. Moim pomysłem jest "połączenie" tego licznika z domyślną aplikacją sms. Problem polega na tym, że nie można uzyskać domyślnej aplikacji sms, aby rozpocząć działanie w ramach listy ConversationList. PS: Aktywność ConversationList jest głównym ekranem domyślnej aplikacji sms. –

-2

Intent smsIntent = new Intent (Intent.ACTION_VIEW);

smsIntent.setType ("vnd.android-dir/mms-sms");

smsIntent.putExtra ("address", "12125551212");

smsIntent.putExtra ("sms_body", "Body of Message");

startActivity (smsIntent);

Powiązane problemy