【问题标题】:Getting package name or app name using a specifc intent使用特定意图获取包名称或应用程序名称
【发布时间】:2023-04-08 03:13:01
【问题描述】:

我需要一些帮助来获取使用特定意图的程序包名称或应用程序名称,例如相机。

我正在开发一个应用程序,它可以扫描哪个应用程序在后台使用相机或麦克风等其他应用程序。但我找不到任何方法来获取此类详细信息。 任何帮助,将不胜感激。 谢谢

【问题讨论】:

  • 另外请告诉我是否可以显示一个对话框,询问使用相机的权限,如棉花糖 6.0。我需要在 marshmallow 23 api 下面的设备中做这样的事情。就像启动相机应用程序应该在对话框中询问权限,如果我点击否,它应该关闭相机应用程序。
  • “使用特定意图的相机”——“相机”不是Intent。 “但我无法找到任何方法来获取此类详细信息”——出于隐私原因,希望您无法使用,除非在 root 设备上。
  • @CommonsWare 是的,使用相机的意图.. 我可以使用设备管理员来执行此操作吗?喜欢以设备管理员身份启用该应用?
  • 我不知道设备管理 API 允许您监视用户在其设备上所做的事情,正如您在此处寻找的那样。话虽如此,这些 API 在过去几年中发生了很大变化,尽管其中大多数变化都与“设备所有者”相关,必须在购买后首次打开设备时进行设置。

标签: android android-intent package android-camera package-managers


【解决方案1】:

另外请告诉我是否可以显示一个询问权限的对话框 像在棉花糖 6.0 中一样使用相机。我需要这样的事情 在棉花糖 23 api 下面的设备中。就像启动相机应用程序一样 应该在对话框中询问权限,如果我点击否,它应该 关闭相机应用

对于 Android Marshmallow ,每当你想启动相机时,你应该检查你是否有访问相机的权限,如果没有,你可以通过显示系统对话框来请求权限 -

 if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CAMERA}, 1001); //May be any number
  } else {
       //Launch camera since you have the permission
}

此外,您必须实现onRequestPermissionsResult() 回调,以便您可以在权限对话框中检查用户操作并做出相应反应 -

@Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch (requestCode) {
            case 1001 : //Same request code 
                if (grantResults.length <= 0 || grantResults[0] != PackageManager.PERMISSION_GRANTED) {
                    Toast.makeText(MainActivity.this,"Camera permission requied", Toast.LENGTH_LONG).show();

                } else if (grantResults.length > 0 && (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED)) {
                    //Launch camera
                }
                break;
        }
    }

【讨论】:

  • 先生,我不是要 6.0。我需要这样的东西 android 5.0 , 4.0 ,...而不是 marshmallow 。我知道棉花糖是可能的。但是我在其他版本中也需要这个东西
  • 哦!但是为什么你要求在 6.0 之前,如果你在 Manifest 文件中指定权限,就已经授予了权限?
  • 如果我在 5.0 中需要相同的功能怎么办?或 4.0
  • @AkshaySood 您不能在 android 5.1 或更低版本上拥有相同的功能,请检查第一段:developer.android.com/training/permissions/requesting.html“如果设备运行的是 Android 5.1 或更低版本,或者您应用的目标 SDK 为 22 或lower:如果你在manifest中列出了一个危险的权限,用户在安装应用的时候需要授权;如果不授权,系统根本不安装应用。”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-12
  • 2012-01-22
相关资源
最近更新 更多