Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Inicio de una aplicación externa desde mi aplicación

Me gustaría lanzar una aplicación que el usuario selecciona desde mi aplicación. Sin embargo, no estoy seguro de cómo iba a hacer esto. He intentado esto:

Intent intent = new Intent(); intent.setAction(Contacts.Intents.SHOW_OR_CREATE_CONTACT); startActivity(intent); 

Pero esto parece lanzar un error y fuerza cerrar mi aplicación. También intenté agregar:

 <action android:name="Contacts.Intents.SHOW_OR_CREATE_CONTACT"/> 

En el archivo AndroidManifest, pero sin éxito.

Un vistazo a Logcat muestra que es un "IOexception – no tal archivo o directorio". Un par de preguntas surgen de esto. Leí los documentos Android y noté que la clase Contact.Intents está obsoleta. Sin embargo, es el sucesor, ContactContracts está dirigido a nivel de API 5, mientras que la orientación API de nivel 3. ¿Podría ser este el problema? Además, he codificado esta aplicación en el código. ¿Existe una manera de recuperar las intenciones de cualquier aplicación que el usuario seleccione para que puedan ser lanzadas?

    5 Solutions collect form web for “Inicio de una aplicación externa desde mi aplicación”

    Debe pasar información adicional a la intención de decirle a Android lo que desea mostrar o crear. De lo contrario Android no sabe qué actividad iniciar y (presumiblemente en su caso) lanza una ActivityNotFoundException .

    Para un contacto, utiliza el Intent.ACTION_INSERT_OR_EDIT genérico y utiliza el tipo MIME de un contacto individual ( Contacts.People.CONTENT_ITEM_TYPE ).

    Por ejemplo:

     Intent intent = new Intent(Intent.ACTION_INSERT_OR_EDIT); intent.setType(People.CONTENT_ITEM_TYPE); intent.putExtra(Contacts.Intents.Insert.PHONE, "+1234567890"); intent.putExtra(Contacts.Intents.Insert.PHONE_TYPE, Contacts.PhonesColumns.TYPE_MOBILE); 

    Aparecerá la aplicación de contactos, que le pedirá que seleccione un contacto existente para agregar el número de teléfono o crear un contacto nuevo.

    No necesita agregar nada especial a su manifiesto para iniciar actividades externas. Solo si manipulara directamente los contactos de ContentProvider , tendrías que añadir los permisos de CONTACTO adecuados a tu manifiesto.

    Yo uso este código para ese propósito:

     Intent intent = new Intent(Intent.ACTION_MAIN); intent.setClassName("com.android.settings", "com.android.settings.Settings"); startActivity(intent); 

    Esto lanzará la aplicación Ajustes, puede utilizar también:

     intent.setClassName("com.android.music", "com.android.music.MediaPlaybackActivityStarter"); intent.setClassName("com.android.contacts", "com.android.contacts.DialtactsContactsEntryActivity"); intent.setClassName("com.android.contacts", "com.android.contacts.DialtactsActivity"); 

    El primero inicia la aplicación de música predeterminada, el segundo los contactos y el tercero el marcador. Espero que esto ayude.

    Debe pasar argumentos válidos a las aplicaciones que inicie. Muchas aplicaciones esperan que el URI de datos y / o ciertos extras sean válidos.

    Prueba el siguiente código:

    Intención intention = new Intent (Contacts.Intents.SHOW_OR_CREATE_CONTACT);

    This.startActivity (intención);

    (Lo siento si hay algo mal en la sintaxis, no tengo Android en esta computadora)

    Y eliminar la acción del manifiesto. Que no es necesario. El método de acción se utiliza para otra cosa. Para obtener más información, consulte el sitio de Android: http://developer.android.com/reference/android/content/Intent.html

    Daniel

    La actividad que está llamando debe aparecer no sólo en el Manifiesto para su propio paquete, sino también en el Manifiesto para el paquete LLAMANDO.

      FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.