poniedziałek, 5 stycznia 2015

Android: uruchamianie aktywności domyślnej aplikacji sms

Jedną z większych zmian w Android KitKat jest ustawienie jednej aplikacji jako domyślnej aplikacji SMS. Ma to zarówno swoje wady jak i zalety, ale nie będę się tu nimi zajmował. Najważniejsze jest to wiedzieć jak odpalić akcję tworzenia sms tej domyślnej aplikacji niezależnie od wersji systemu.

Znalezienie rozwiązania chwilę mi zajęło. Przed Android KitKat istnieje wiele sposobów na odpalenie aktywności tworzenia nowej wiadomości sms. Co gorsze było to w pewnym stopniu zależne od platformy. Podobno ta zmiana ma na celu właśnie ujednolicenie tej czynności. Mam nadzieję, że jest znanym odpalanie aktywności przez Intent. Tak więc zamieszczony poniżej kod służy jedynie tworzeniu obiektu klasy Intent. Pominę ewentualne flagi i podobne elementy, ponieważ zależą dość mocno od tego co ma być wykonane przy okazji. Mnie zależy wyłącznie na otwarciu aktywności tworzenia nowej wiadomości bez podawania dodatkowych danych. Dodatkowo kod ma działać od API 15 (Android ver. 4.0.3).

@SuppressLint("NewApi")
private Intent createSmsIntent(Context context) {
 Intent intent;
 if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
  String defaultSmsPackage = Telephony.Sms.getDefaultSmsPackage(context);
  intent = new Intent(Intent.ACTION_SEND);
  intent.setType("text/plain");
  if(defaultSmsPackage != null) {
   intent.setPackage(defaultSmsPackage);
  }
 } else {
  intent = new Intent(Intent.ACTION_VIEW);
  intent.setData(Uri.parse("sms:"));
 }
 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
 return intent;
}

W moim przypadku kod odpalany jest z poziomu Widgetu i działa jak należy. Na razie testowałem właśnie na KitKat (Android ver. 4.4.2) na fizycznym urządzeniu. Metoda użyta dla wersji wcześniejszych na KitKat również działa, ale można uznać ją za irytującą dla użytkownika, ponieważ wyświetli dialog wybierania domyślnej aplikacji dla akcji wysyłania SMS. Jest to absolutnie zbędne, skoro domyślna aplikacja jest już dawno ustawiona w systemie.

Brak komentarzy:

Prześlij komentarz