我的应用程序在启动时崩溃,我不确定为什么
My app is crashing at startup and I am unsure why
我正在制作一个可以将设备静音和取消静音的应用程序,但是当我打开它时它崩溃了。我不知道为什么要这样做,真的很想得到一些帮助。这是代码:
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 开发经验。并且主要是从互联网上的各种来源编译此代码。
提前致谢。
我已经检查了你的代码。创建应用程序之前定义了不必要的变量。您需要做一些更改。
替换下面的变量定义,
AudioManager audioManager = (AudioManager)getApplicationContext().getSystemService(Context.AUDIO_SERVICE);
有了这个,
AudioManager audioManager;
然后在 onCreate 方法中,替换下面一行,
AudioManager am = (AudioManager)getSystemService(AUDIO_SERVICE);
有了这个,
audioManager = (AudioManager)getSystemService(AUDIO_SERVICE);
我使用了 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);
}
检查它是否有访问权限,如果没有,去页面做。
这修复了导致致命错误的安全异常,现在该应用程序可以完美运行。
我正在制作一个可以将设备静音和取消静音的应用程序,但是当我打开它时它崩溃了。我不知道为什么要这样做,真的很想得到一些帮助。这是代码:
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 开发经验。并且主要是从互联网上的各种来源编译此代码。
提前致谢。
我已经检查了你的代码。创建应用程序之前定义了不必要的变量。您需要做一些更改。
替换下面的变量定义,
AudioManager audioManager = (AudioManager)getApplicationContext().getSystemService(Context.AUDIO_SERVICE);
有了这个,
AudioManager audioManager;
然后在 onCreate 方法中,替换下面一行,
AudioManager am = (AudioManager)getSystemService(AUDIO_SERVICE);
有了这个,
audioManager = (AudioManager)getSystemService(AUDIO_SERVICE);
我使用了 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);
}
检查它是否有访问权限,如果没有,去页面做。
这修复了导致致命错误的安全异常,现在该应用程序可以完美运行。