Android - Como forzar seleccion apps shared

   
Vista:

Como forzar seleccion apps shared

Publicado por Luis (88 intervenciones) el 10/12/2016 14:14:26
Hola de nuevo a todos.
He estado buscando en internet si es posible vivir sin googgle y gmail y resulta que los usuarios que tienen un telefono android si utilizan cianogenmod no les es necesario disponer de cuenta gmail por eso quisiera hacerles una pregunta.

Tengo una opcion item para contactar con el desarrollador a traves de gmail de esta forma:

1
2
3
4
5
6
7
8
9
case R.id.preguntame_con_gmail:
Intent intentt = new Intent(Intent.ACTION_SEND);
intentt.setType("text/plain");
intentt.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.ideas_para_mejorar_la_app));
intentt.putExtra(Intent.EXTRA_TEXT, getString(R.string.cuentame_que_te_gustaria_incluir));
intentt.putExtra(Intent.EXTRA_EMAIL, new String[]{getString(R.string.mi_correo_contacto)});
intentt.setPackage("com.google.android.gm");
startActivity(intentt);
return true;

Fuerzo a utilizar GMAIL y claro si no esta instalado da un force closed.

Tambien tengo la opcion de que muestre una lista con todas las apps para compartir de manera que el usuario pueda elegir cual app utilizar, para ello omito esta linea en el anterior codigo

1
intentt.setPackage("com.google.android.gm");
fuerzo a mostrar todas las apps para shared

Quedando asi:

1
2
3
4
5
6
7
8
9
10
11
case R.id.preguntame_con_cualquier_shared:
Intent intentt = new Intent(Intent.ACTION_SEND);
intentt.setType("text/plain");
intentt.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.solicitud_de_informacion));
intentt.putExtra(Intent.EXTRA_TEXT, getString(R.string.cuentame_por_gmail));
intentt.putExtra(Intent.EXTRA_EMAIL, new String[]{getString(R.string.correo_contacto)});
 
//  intentt.setPackage("com.google.android.gm");
 
startActivity(intentt);
return true;

Pero me surgio un problema, y es que tras utilizar unas cuantas veces wasapp para compartir ya no muestra las otras opciones directamente cuando das al item contactar te envia a wasap ya que es el mas utilizado y no puedes usar gmail o otra app y claro por wasap no puedes enviar a una direccion de correo.

De que manera se puede forzar para que siempre muestre todas las opciones shared y no se decante por la mas utilizada.

Preferiblemente gmail y si no existe mostrar todas.

Muchas gracias por su tiempo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Como forzar seleccion apps shared

Publicado por Luis (88 intervenciones) el 11/12/2016 14:23:55
Holaaaaa de nuevo ya casi lo tengo.

Esta es la linea que muestra todas las opcione

1
startActivity(Intent.createChooser(intent, "Recomiendo usar GMAIL para contactar"));

Ahora solo me falta ya que quiero utilizar gmail
colocar un if else

if(com.google.android.gm==null{

// si no esta instalado
}

Lanzar esta linea
1
startActivity(Intent.createChooser(intent, "Recomiendo usar GMAIL para contactar"));

Haber como me lo invento si lo saco ya lo posteare para que los que vengan detras les pueda servir.

Saludoooooos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como forzar seleccion apps shared

Publicado por Luis (88 intervenciones) el 11/12/2016 16:22:28
Holaaa Holitaaa.

Bueno creo que lo tengo quiza sea un poco basta la forma pero en fin algo es algo.
Aqui dejo el codigo y si algien me echa una mano a mejorarlo sera bienvenido.

El item del menu

1
2
3
4
case R.id.comentame_algo:
                comprovar_si_gmail_esta_instalado();
 
                return true;

Y aqui los metodos para comprovar:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
private void  comprovar_si_gmail_esta_instalado() {
 
        boolean instalada= appGMAILInstaladaSioNO("com.google.android.gm");
 
        if(instalada) {
            Toast.makeText(getApplicationContext(), "OK GMAIL Si esta  instalado", Toast.LENGTH_LONG).show();
        }
 else {
            Toast.makeText(getApplicationContext(), "NOOOO   GMAIL Nooooo esta   instalado", Toast.LENGTH_LONG).show();
        }
    }
 
    private boolean appGMAILInstaladaSioNO(String uri) {
        PackageManager pm = getPackageManager();
        try {
            pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
            return true;
        } catch (PackageManager.NameNotFoundException e) {
        }
 
        return false;
    }


Un poco basto y exceso de codigo pero de momento lo dejo asi, si algun usuario se anima a mejorar el codigo se agradeceria.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
private void  comprovar_si_gmail_esta_instalado() {
 
        boolean installed = appInstalledOrNot("com.google.android.gm");
 
        if(installed) {
 
    //        Toast.makeText(getApplicationContext(), "OK GMAIL Si esta  instalado", Toast.LENGTH_LONG).show();
 
                Intent intentt = new Intent(Intent.ACTION_SEND);
                intentt.setType("text/plain");
                intent.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.solicitud_de_informacion));
                intent.putExtra(Intent.EXTRA_TEXT, getString(R.string.cuentame_que_te_parece_la_app));
                intent.putExtra(Intent.EXTRA_EMAIL, new String[]{getString(R.string.correo_contacto)});
                intentt.setPackage("com.google.android.gm");
                startActivity(intentt);
        }
 
 
 
 else {
 
     //       Toast.makeText(getApplicationContext(), "NOOOO   GMAIL Nooooo esta   instalado", Toast.LENGTH_LONG).show();
 
                Intent intent = new Intent(Intent.ACTION_SEND);
                intent.setType("text/plain");
                intent.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.solicitud_de_informacion));
                intent.putExtra(Intent.EXTRA_TEXT, getString(R.string.cuentame_que_te_parece_la_app));
                intent.putExtra(Intent.EXTRA_EMAIL, new String[]{getString(R.string.correo_contacto)});
                startActivity(Intent.createChooser(intent, "Recomiendo usar GMAIL para contactar"));
        }
    }

Y el modo de retornar valores de si esta o no esta gmail instalado se queda igual.

1
2
3
4
5
6
7
8
9
10
private boolean appGMAILInstaladaSioNO(String uri) {
        PackageManager pm = getPackageManager();
        try {
            pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
            return true;
        } catch (PackageManager.NameNotFoundException e) {
        }
 
        return false;
    }

Espero que a alguien le sirva.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar