android - 如何检测在Android上打开了哪个应用程序

标签 android keyboard

我正在开发一个 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/

相关文章:

Camera.open() 上的 java.lang.RuntimeException : Fail to connect to camera service.;

android - 主题更改时缺少操作栏

java - 告诉 java 要听哪个键盘

Android,如何知道我的 View 被软键盘adjustPan移动了​​多少

ios - 禁用 iOS5 键盘中的拆分选项

android - 如何使用 videoview 流畅地播放来自 url 的视频?

android JSON post响应 "status code 500"和状态行 "Internal Server Error"

android - 如何以编程方式禁用预测文本(没有 EditText)

ios - 当 UIAlertView 在屏幕上时,无法在 UIViewController 堆栈中隐藏键盘

android - 为什么 Android webview 仅在键入 "Next"而不是键入 ="number"时才在键盘中显示 ="text"?