Sto sviluppando una tastiera personalizzata Android e voglio inviare stickies ai miei amici per esempio su Hangouts dalla mia tastiera. Ho aggiunto del png per questo.Come rilevare quale app è aperta su Android
Quando utilizzo la condivisione share di Android, devo selezionare prima un'app da condividere. È possibile rilevare l'attuale applicazione aperta dalla mia tastiera? Ad esempio, se sto chattando con Hangouts, voglio chiamare l'intento dicendogli di condividere con "com.something.hangouts"
Se sono in FB messenger, dicendolo "com.something.facebook.messenger" ecc. ...
ho cercato di ottenere in questo modo:
fun getOpenedApplication() {
var am = this.getSystemService(ACTIVITY_SERVICE) as ActivityManager;
var l = am.getRecentTasks(1,
ActivityManager.RECENT_WITH_EXCLUDED);
var i = l.iterator();
var pm = this.packageManager;
while (i.hasNext()) {
try {
var intent = i.next().baseIntent;
var list = pm.queryIntentActivities(intent,
PackageManager.MATCH_DEFAULT_ONLY);
var c = pm.getApplicationLabel(pm.getApplicationInfo(
list[0].activityInfo.packageName,
PackageManager.GET_META_DATA));
Toast.makeText(this, "Application name: " + c.toString(),
Toast.LENGTH_LONG).show();
} catch (e: Exception) {
Toast.makeText(this,
"Application name not found: " + e.toString(),
Toast.LENGTH_LONG).show();
}
}
}
Ma non funziona bene ... si dà indietro il programma di avvio o la tastiera. (Casualmente)
Ho cercato di ottenere la prima app dalla lista Applicazioni recenti ma non funzionava
Grazie, questa era la soluzione! – MegaX
Fantastico. Ho dovuto passare attraverso molti thread su SO per arrivare a questo. complimenti! – Shahar
Grazie, Aiuto fantastico dalla tua parte. – Janak