首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Android L中获取顶级活动名称

问在Android L中获取顶级活动名称
EN

Stack Overflow用户
提问于 2015-08-13 14:28:51
回答 2查看 3.8K关注 0票数 0

我正在开发一个应用程序,它使用getRunningTasks()函数来获取顶级活动名称。但是getRunningTasks()在Android L中被弃用了。有没有其他方法可以在棒棒糖中获得顶级活动名称(而不是包名)。

EN

回答 2

Stack Overflow用户

发布于 2015-08-13 14:51:13

代码语言:javascript
复制
Class<?> currentClassName; // Declare Globally 

    Activity activity = (Activity) context;//casting context into activity
    try
    {
        currentClassName = Class.forName(activity.getClass().getName()); //getting the current activity's class name from activity object
    }
    catch (ClassNotFoundException e)
    {
        e.printStackTrace();
    }

请阅读SO Answer

票数 1
EN

Stack Overflow用户

发布于 2015-12-18 17:05:27

我找到了一个解决方案,通过在Android L中添加新的UsageStatsManager类,在棒棒糖上获得顶级活动名称。

首先,您需要权限

代码语言:javascript
复制
<uses-permission
        android:name="android.permission.PACKAGE_USAGE_STATS"
        tools:ignore="ProtectedPermissions" />

并且用户必须启用此选项。

然后使用这个方法queryEvents()

这里有一个简单的例子。

代码语言:javascript
复制
while (true) {
    final long INTERVAL = 1000;
    final long end = System.currentTimeMillis();
    final long begin = end - INTERVAL;
    final UsageEvents usageEvents = manager.queryEvents(begin, end);
    while (usageEvents.hasNextEvent()) {
        UsageEvents.Event event = new UsageEvents.Event();
        usageEvents.getNextEvent(event);
        if (event.getEventType() == UsageEvents.Event.MOVE_TO_FOREGROUND) {
            Log.d("event", "timestamp : " + event.getTimeStamp());
            Log.d("event", "package name : " + event.getPackageName());
            Log.d("event", "class name : " + event.getClassName());
        }
    }
    try {
        Thread.sleep(1000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

当activity变为前台时,您可以在Logcat中看到它的类名和包名。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31980976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档