android中的智能应用程序锁定应用程序如何检测应用程序启动? [英] How does the smart app lock application in android detects application launch ?

查看:142
本文介绍了android中的智能应用程序锁定应用程序如何检测应用程序启动?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在Android应用程序中检测应用程序启动?

android中的Smart App Lock应用程序如何检测应用程序的启动?



 import android.app.ActivityManager; 
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

import java.util.Iterator;
import java.util.List;

公共类MainActivity扩展AppCompatActivity
{
public static final String TAG =MainActivity;

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

final PackageManager packageManager = getPackageManager();
//获取已安装应用的列表。
List< ApplicationInfo> packages = packageManager.getInstalledApplications(PackageManager.GET_META_DATA);
for(ApplicationInfo packageInfo:packages){
Log.d(TAG,Installed package:+ packageInfo.packageName);
Log.d(TAG,Source dir:+ packageInfo.sourceDir);
Log.d(TAG,启动活动:+ packageManager.getLaunchIntentForPackage(packageInfo.packageName));
}

ActivityManager activityManager =(ActivityManager)this.getSystemService(ACTIVITY_SERVICE);
List l = activityManager.getRecentTasks(1,ActivityManager.RECENT_WITH_EXCLUDED);
Iterator i = l.iterator();

while(i.hasNext()){
ActivityManager.RunningAppProcessInfo info =(ActivityManager.RunningAppProcessInfo)i.next();
try
{
CharSequence c = packageManager.getApplicationLabel(packageManager.getApplicationInfo(
info.processName,PackageManager.GET_META_DATA));
Log.w(LABEL,c.toString());
} catch(例外e)
{}
}
}
}





我尝试了什么:



我尝试使用此代码片段来检测至少当前正在运行的应用程序。但这会抛出一个 Class Cast异常



 android.app.ActivityManager $ RecentTaskInfo无法强制转换为android.app.ActivityManager $ RunningAppProcessInfo 

解决方案

RecentTaskInfo无法强制转换为android.app.ActivityManager

RunningAppProcessInfo


How to detect the application launch in android application ?
How does the Smart App Lock applications in android detect the launch of an application ?

import android.app.ActivityManager;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

import java.util.Iterator;
import java.util.List;

public class MainActivity extends AppCompatActivity
{
public  static  final String TAG ="MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final PackageManager packageManager = getPackageManager();
        //get a list of installed apps.
        List<ApplicationInfo> packages = packageManager.getInstalledApplications(PackageManager.GET_META_DATA);
        for (ApplicationInfo packageInfo : packages) {
            Log.d(TAG, "Installed package :" + packageInfo.packageName);
            Log.d(TAG, "Source dir : " + packageInfo.sourceDir);
            Log.d(TAG, "Launch Activity :" + packageManager.getLaunchIntentForPackage(packageInfo.packageName));
        }

        ActivityManager activityManager = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
        List l = activityManager.getRecentTasks(1, ActivityManager.RECENT_WITH_EXCLUDED);
        Iterator i = l.iterator();
        
        while (i.hasNext()) {
            ActivityManager.RunningAppProcessInfo info = (ActivityManager.RunningAppProcessInfo) i.next();
            try
            {
                CharSequence c = packageManager.getApplicationLabel(packageManager.getApplicationInfo(
                        info.processName, PackageManager.GET_META_DATA));
                Log.w("LABEL", c.toString());
            } catch (Exception e)
            {}
        }
    }
}



What I have tried:

I tried this snippet to detect atleast, the applications currently running. But this throws me a Class Cast Exception :

android.app.ActivityManager$RecentTaskInfo cannot be cast to android.app.ActivityManager$RunningAppProcessInfo

解决方案

RecentTaskInfo cannot be cast to android.app.ActivityManager


RunningAppProcessInfo


这篇关于android中的智能应用程序锁定应用程序如何检测应用程序启动?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆