【问题标题】:Method invocation "vibrate" may produce java.lang.NullPointerException warning after updating to Android Studio 3更新到 Android Studio 3 后,方法调用“振动”可能会产生 java.lang.NullPointerException 警告
【发布时间】:2017-10-26 14:47:06
【问题描述】:

更新到 Android Studio 3.0 后,每次尝试使用 vibrate() 时都会收到此警告:

方法调用“振动”可能会产生“java.lang.NullPointerException”

这是我的代码:

package com.gavinsappcreations.vibratortest;

import android.content.Context;
import android.os.Vibrator;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
        vibrator.vibrate(100);

    }
}

我已包含权限:

<uses-permission android:name="android.permission.VIBRATE"/>

此外,该代码在我的设备上也可以使用。

【问题讨论】:

  • 显示您的详细代码和错误日志信息。

标签: java android android-studio-3.0


【解决方案1】:

您可以删除警告。

if(vibrator != null) {
   vibrator.vibrate(100);
}

查看 Nikolas 的评论。

【讨论】:

  • 谢谢!我只是感到困惑,因为我不记得这个警告曾出现在以前的 Android Studio 版本中。
  • 虽然非空检查修复了警告,但关于“没有 VIBRATOR_SERVICE”的假设是完全错误的。您的 IDE 只执行静态代码分析,并且比您以前的 IDE 可能有更多限制。
  • 实际上,你是对的。在阅读了这个对象的文档之后,有一个方法 hasVibrator() 意味着这个对象永远不会为空。
  • 虽然,我有一个开发者控制台错误日志,在 Galaxy S8+ 上使用振动时显示 NullPointerException,它肯定有一个振动器。也许有限制振动访问的设置?
  • 我在 Android 8.1 (SDK 27) 上遇到了三星 Galaxy Tab A (2016) 的崩溃,所以我在那里设置了空检查。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-25
  • 2019-10-08
相关资源
最近更新 更多