我正在制作一个使设备静音和取消静音的应用程序,但是当我打开它时会崩溃。我不知道为什么要这样做,真的希望得到一些帮助。这是代码:
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开发经验。并大多从互联网上的各种来源编译此代码。
谢谢。
答案 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);