使用特定意图获取包名称或应用程序名称

时间:2016-03-15 21:18:23

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

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

我正在开发一个应用程序来扫描哪个应用程序在后台使用相机或其他像麦克风等。但我找不到任何方法来获取这样的细节。 任何帮助,将不胜感激。 感谢

1 个答案:

答案 0 :(得分:0)

  

另外请告诉我是否可以显示一个要求获得许可的对话框   像棉花糖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;
        }
    }