我的应用在启动时崩溃,我不确定为什么

时间:2019-06-02 12:22:23

标签: java android crash

我正在制作一个使设备静音和取消静音的应用程序,但是当我打开它时会崩溃。我不知道为什么要这样做,真的希望得到一些帮助。这是代码:


package com.earthmonster.testmute4;

 

import androidx.appcompat.app.AppCompatActivity;

 

import android.content.Context;

import android.media.AudioManager;

import android.os.Bundle;

 

public class MainActivity extends AppCompatActivity {

 

 

 

   

 

 

    AudioManager audioManager = (AudioManager)getApplicationContext().getSystemService(Context.AUDIO_SERVICE);

 

    @Override

 

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

 

 

        AudioManager am = (AudioManager)getSystemService(AUDIO_SERVICE);

        int volume_level=am.getStreamVolume(AudioManager.STREAM_MUSIC);

        if (volume_level > 0)

        {

            audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 0, 0);

            audioManager.setStreamVolume(AudioManager.STREAM_SYSTEM, 0, 0);

            audioManager.setStreamVolume(AudioManager.STREAM_RING, 0, 0);

            audioManager.setStreamVolume(AudioManager.STREAM_NOTIFICATION, 0, 0);

            audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 0, 0);

 

        }

        else {

            audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 100, 0);

            audioManager.setStreamVolume(AudioManager.STREAM_SYSTEM, 100, 0);

            audioManager.setStreamVolume(AudioManager.STREAM_RING, 100, 0);

            audioManager.setStreamVolume(AudioManager.STREAM_NOTIFICATION, 100, 0);

            audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 100, 0);

        }

        finish();

    }

}


有人可以找出问题所在吗!我是绝对的初学者。没有Java经验。没有android开发经验。并大多从互联网上的各种来源编译此代码。

谢谢。

2 个答案:

答案 0 :(得分:2)

我使用了DHAVAL ASODARIYA's的答案,但不得不多做一点,以便我自己回答。

我在变量定义下面替换了

AudioManager audioManager = (AudioManager)getApplicationContext().getSystemService(Context.AUDIO_SERVICE);

与此,

AudioManager audioManager;

然后在onCreate方法中,替换下面的行

AudioManager am = (AudioManager)getSystemService(AUDIO_SERVICE);

与此,

audioManager = (AudioManager)getSystemService(AUDIO_SERVICE);

我添加了

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

到清单,因为它需要请勿打扰访问 并添加了这个

NotificationManager notificationManager = 
    (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
    && !notificationManager.isNotificationPolicyAccessGranted()) {

    Intent intent = new Intent(
                        android.provider.Settings
                        .ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS);

    startActivity(intent);
}

要检查其是否具有访问权限,请转到页面进行访问。

这修复了导致致命错误的安全异常,现在该应用程序可以完美运行。

答案 1 :(得分:0)

我已经检查了您的代码。创建应用程序之前,没有定义不必要的变量。您需要进行一些更改。

替换为变量定义以下

AudioManager audioManager = (AudioManager)getApplicationContext().getSystemService(Context.AUDIO_SERVICE);

与此,

AudioManager audioManager;

然后在onCreate方法中,替换下面的行

AudioManager am = (AudioManager)getSystemService(AUDIO_SERVICE);

与此,

audioManager = (AudioManager)getSystemService(AUDIO_SERVICE);