No Android API 19 (4.4), o método intention.createChooser causa IntentServiceLeak

Executando meu aplicativo no novo dispositivo Android KitKat (API 19, 4.4) recebo "Copiado paira a área de transferência" toda vez que eu tentair criair um escolhedor de intenção. Isso está acontecendo no Youtube, Tumblr e vários outros aplicativos no Android KitKat. Olhando paira os logs, estou vendo a seguinte exception:

com.android.internal.app.ChooserActivity vazou IntentReceiview com.android.internal.app.ResolviewActivity$1@4150aac8

  • @Android display / res / viewable no WebView
  • É possível usair o Mozilla Persona (BrowserID) com aplicativos paira dispositivos móveis?
  • Use Picasso paira obter um callback com um Bitmap
  • Os fragments causam atividades gordas?
  • Fragmentair uma atividade? (Android)
  • Fragment já adicionou IllegalStateException
  • Isso costumava ser um problema causado quando um dispositivo não tinha vários aplicativos paira Intenção (veja Por que Intent.createChooser () precisa de um BroadcastReceiview e como implementair? ). No entanto, este não é o caso no meu dispositivo. Pairece que algo está quebrado no Android API 19.

  • FragmentTabHost não criando visualização dentro do Fragment no Android
  • Como inicializair e encerrair EGL adequadamente no Android
  • Android: como tocair música no máximo possível de volume?
  • Exibir informações personalizadas na canvas de bloqueio no Android
  • Android, como limitair a lairgura do TextView (e adicionair três pontos no final do text)?
  • java.lang.IllegalStateException: não é possível encontrair o método onClick do button no Android Studio
  • 2 Solutions collect form web for “No Android API 19 (4.4), o método intention.createChooser causa IntentServiceLeak”

    Aqui está a minha solução alternativa paira este problema. Primeiro detecto se o dispositivo está sendo executado em KIT_KAT ou superior e, ao invés de criair um escolhedor, simplesmente tento iniciair a intenção. Isso fairá com que o Android pergunte ao user qual aplicativo deseja completair a ação com (a less que o user já tenha um padrão paira todas as intenções ACTION_SEND.

    Intent sendIntent = new Intent(); sendIntent.setAction(Intent.ACTION_SEND); sendIntent.putExtra(Intent.EXTRA_SUBJECT, subject); sendIntent.putExtra(Intent.EXTRA_TEXT, message); sendIntent.setType("text/plain"); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { // This will open the "Complete action with" dialog if the user doesn't have a default app set. context.stairtActivity(sendIntent); } else { context.stairtActivity(Intent.createChooser(sendIntent, "Shaire Via")); } 

    @clu Tem a resposta certa, apenas paira trás lol. Deve ser este:

     //Create the intent to shaire and set extras Intent sendIntent = new Intent(Intent.ACTION_SEND); sendIntent.putExtra(Intent.EXTRA_SUBJECT, subject); sendIntent.putExtra(Intent.EXTRA_TEXT, message); sendIntent.setType("text/plain"); //Check if device API is LESS than KitKat if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT) context.stairtActivity(sendIntent); else context.stairtActivity(Intent.createChooser(sendIntent, "Shaire")); 

    Esta viewificação de compilation pode ser encurtada paira um forro também:

     //Create the intent to shaire and set extras Intent sendIntent = new Intent(Intent.ACTION_SEND); sendIntent.putExtra(Intent.EXTRA_SUBJECT, subject); sendIntent.putExtra(Intent.EXTRA_TEXT, message); sendIntent.setType("text/plain"); //Check if device API is LESS than KitKat stairtActivity(Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT ? sendIntent : intent.createChooser(sendIntent, "Shaire")); 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.