【问题标题】:My app is crashing at startup and I am unsure why我的应用程序在启动时崩溃,我不确定为什么
【发布时间】:2019-10-18 06:39:40
【问题描述】:

我正在制作一个应用程序来静音和取消静音设备,但是当我打开它时它崩溃了。我不知道它为什么这样做,并且真的需要一些帮助。代码如下:


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经验。没有安卓开发经验。并且主要从互联网上的各种来源编译此代码。

提前致谢。

【问题讨论】:

标签: java android crash


【解决方案1】:

我使用了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);
}

要检查它是否可以访问,如果没有,请转到页面进行操作。

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

【讨论】:

  • 很高兴知道,伙计。祝你好运。 :)
【解决方案2】:

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

替换下面的变量定义,

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

有了这个,

AudioManager audioManager;

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

AudioManager am = (AudioManager)getSystemService(AUDIO_SERVICE);

有了这个,

audioManager = (AudioManager)getSystemService(AUDIO_SERVICE);

【讨论】:

  • 它仍然崩溃。
  • 请发布崩溃日志。
  • @EarthMonster 那是代码的安全异常。请看下面的帖子。 stackoverflow.com/questions/39151453/…
  • 我需要与帖子中相同的权限吗?
  • 是的,您需要相同的权限,因为新的隐私政策已随着新版本的更新而发生变化。而且您还尝试使用您的应用更改通知、铃声和系统音量,所以。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-20
相关资源
最近更新 更多