我正在开发一个应用程序,它使用getRunningTasks()函数来获取顶级活动名称。但是getRunningTasks()在Android L中被弃用了。有没有其他方法可以在棒棒糖中获得顶级活动名称(而不是包名)。
发布于 2015-08-13 14:51:13
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
发布于 2015-12-18 17:05:27
我找到了一个解决方案,通过在Android L中添加新的UsageStatsManager类,在棒棒糖上获得顶级活动名称。
首先,您需要权限
<uses-permission
android:name="android.permission.PACKAGE_USAGE_STATS"
tools:ignore="ProtectedPermissions" />并且用户必须启用此选项。
然后使用这个方法queryEvents()
这里有一个简单的例子。
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中看到它的类名和包名。
https://stackoverflow.com/questions/31980976
复制相似问题