Android上下文getPackageManager hasSystemFeature

时间:2016-05-26 01:41:59

标签: java android package-managers

这是我在java中的代码:

public class TestAudio extends Activity {
    private TextView t1;
    private Context context;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test_audio);
        t1 = (TextView)findViewById(R.id.t1);
        System.out.println("aaaaaaaaaaaaaa");
        PackageManager packageManager = context.getPackageManager();

        System.out.println("bbbbbbbbbbbbbb");
        if(packageManager.hasSystemFeature(PackageManager.FEATURE_MICROPHONE)){
            t1.setText("I'm here");
        }else{
            t1.setText("gg");
        }

    }

为什么它在执行两个system.out.print之间的代码时停止响应?

3 个答案:

答案 0 :(得分:1)

我假设你得到的错误是NPE。由于您的context尚未初始化。首先初始化它。

答案 1 :(得分:1)

您尚未初始化上下文。要获得包管理器,您可以使用活动的上下文。获取活动的上下文以初始化包管理器:

PackageManager packageManager = this.getPackageManager();

或者只是

PackageManager packageManager = getPackageManager();

答案 2 :(得分:0)

在使用之前初始化您的上下文:

this.context = getApplicationContext();