使用变量替换一些常量Android API

时间:2014-02-18 09:28:41

标签: java android camera android-camera

我正在开发一个功能,检查camera是否有任何

if (getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA) == false)
{
//do something
}

没关系,但是当把这些代码放到带参数的函数中时,它就不起作用了

public boolean checkCameraDevice(String str)
    {
        if (getPackageManager().hasSystemFeature(PackageManager.str) == false)
        {

所以,如何实现checkCameraDevice功能,以便我可以通过FEATURE_CAMERA

checkCameraDevice("FEATURE_CAMERA")

3 个答案:

答案 0 :(得分:2)

如果PackageManager.str是变量,则无法使用PackageManager来获取str的常量。

您需要将常量值传递给参数。

像这样使用:

public boolean checkCameraDevice(String feature)
    {
        if (getPackageManager().hasSystemFeature(feature) == false)
        {

并致电

checkCameraDevice(PackageManager.FEATURE_CAMERA);

答案 1 :(得分:2)

PackageManager.FEATURE_CAMERA是指PackageManager中的常量字段,其实际值为"android.hardware.camera"FEATURE_CAMERA是变量名称,您无法通过PackageManager."FEATURE_CAMERA"将其称为完全错误。如果要使用String参数传递checkCameraDevice(str)而不是变量名称来调用API "android.hardware.camera"

方法定义:

public boolean checkCameraDevice(String str)
{
    if (getPackageManager().hasSystemFeature(str) == false)
    {
         //do something
    }
}

方法调用:

checkCameraDevice("android.hardware.camera");

checkCameraDevice(PackageManager.FEATURE_CAMERA);

答案 2 :(得分:1)

PackageManager.FEATURE_CAMERA的常量值为android.hardware.camera。 你应该这样打电话

checkCameraDevice("android.hardware.camera");

或只是致电

checkCameraDevice(PackageManager.FEATURE_CAMERA);

并且您无法致电PackageManager.str str PackageManager {{1}}。你应该直接使用字符串,否则你可以使用常量。