首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何检查摄像头app是否为服务的主动活动?

如何检查摄像头app是否为服务的主动活动?
EN

Stack Overflow用户
提问于 2016-02-20 10:29:44
回答 1查看 418关注 0票数 0

我写了一个后台服务,它注册了一个“关闭屏幕”的广播接收器。我希望我的服务能够识别上一个活动的应用程序(我指的是其他应用程序)是否是使用摄像头的应用程序(如默认相机、照片查询、谷歌相机、直线相机等)?然后我可以控制我的服务到它应该做的事情。

@FlyingPumba代码的调试结果

02-20 11:21: 10627- 10627 / I/CameraApp:活动应用名称:我的Camera应用02-20 11:21: 10627-10627/ I/CameraApp: Camera App : com.sec.android.app.camera 02-20 11:21: 10627-10627/ I/CameraApp: Camera App : com.google.android.GoogleCamera 02-20 11:21: 10627-10627/ I/CameraApp: Camera app : com.fotoable.fotobeauty 02-20 11:21:53.556 53.566-53.566-10627/ I/CameraApp: Camera app : com.commsource.beautyplus 02-20 11:21: 10627-10627/ I/CameraApp: Camera app : com.venticake.retrica 02-20 11:21: 10627-10627/ I/CameraApp: Camera app : com.joeware.android.gpulumera 02-20 11:21: 10627-10627/ I/CameraApp: Camera app : com.ywqc.picbeauty 02-20 11:21: 10627-10627/ I/CameraApp: Camera app : vStudio.Android。Camera360 02-20 11:21:53.566 10627-10627/ I/CameraApp:摄像头app : com.almalence.night

EN

回答 1

Stack Overflow用户

发布于 2016-02-20 11:14:08

您可以尝试:

代码语言:javascript
运行
复制
ActivityManager am = (ActivityManager)this.getSystemService(ACTIVITY_SERVICE);
PackageManager pm = this.getPackageManager();
// get the info from the currently running task
List< ActivityManager.RunningTaskInfo > taskInfo = am.getRunningTasks(1);
Log.d("CameraApp", "Foreground Activity Name ::" + taskInfo.get(0).topActivity.getClassName());
ComponentName componentInfo = taskInfo.get(0).topActivity;
if (isCameraApp(componentInfo.getPackageName())) {
    // do your stuff
}

private boolean isCameraApp(CharSequence packageName) {
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    // get activities that can resolve the image capture intent
    List<ResolveInfo> imageCaptureActivites = context.getPackageManager().queryIntentActivities(intent, 0);
    Log.i("CameraApp","Camera app :" + name.toString());
    for(ResolveInfo info : imageCaptureActivites) {
        if (info.activityInfo.packageName.contains(packageName.toString()) {
            return true;
        }
    }
    return false;
}

您将在Manifed中需要此权限:

代码语言:javascript
运行
复制
<uses-permission android:name="android.permission.GET_TASKS"/>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35518418

复制
相关文章

相似问题

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