我正在开发一个 android 自定义键盘,我想通过我的键盘向我的 friend 发送即时贴,例如在视频群聊中。我为此添加了一些 png。
当我使用 android 的共享 api 时,我必须首先选择一个要共享的应用程序。是否可以从我的键盘检测到当前打开的应用程序?例如,如果我正在与环聊聊天,那么我想调用 Intent 告诉它与“com.something.hangouts”分享
如果我在 FB Messenger 中然后告诉它“com.something.facebook.messenger”等...
我试过这样得到它:
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();
}
}
}
但它运行不正常...它返回启动器或键盘。 (随机)
我试图从最近的应用程序列表中获取第一个应用程序,但它不工作
最佳答案
这很容易。
String packageName = getCurrentInputEditorInfo().packageName;
您的 InputMethodService 类的方法。
关于android - 如何检测在Android上打开了哪个应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35811641/