Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何确定为什么我的Android应用程序一直停止?_Java_Android - Fatal编程技术网

Java 如何确定为什么我的Android应用程序一直停止?

Java 如何确定为什么我的Android应用程序一直停止?,java,android,Java,Android,我的申请有问题。应用程序应该使用手机上的音量键发送消息。问题是它一直停下来,我不知道它是否有效。下面是代码,我还添加了一些唤醒锁,以便我的应用程序即使在手机被锁定时也能保持活动状态 public class MainActivity extends Activity { private final static int SEND_SMS_PERMISSION_REQUEST_CODE = 111; private Button sendMessage; @Override protecte

我的申请有问题。应用程序应该使用手机上的音量键发送消息。问题是它一直停下来,我不知道它是否有效。下面是代码,我还添加了一些唤醒锁,以便我的应用程序即使在手机被锁定时也能保持活动状态

public class MainActivity extends Activity {

private final static int SEND_SMS_PERMISSION_REQUEST_CODE = 111;
private Button sendMessage;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
    PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "My Tag");
    wl.acquire();
    setContentView(R.layout.activity_main);
    sendMessage = findViewById(R.id.send_message);
    final EditText phone = findViewById(R.id.phone_no);
    final EditText message = findViewById(R.id.message);
    sendMessage.setEnabled(false);


    if (checkPermission(Manifest.permission.SEND_SMS)) {
        sendMessage.setEnabled(true);
    } else {
        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.SEND_SMS}, SEND_SMS_PERMISSION_REQUEST_CODE);
    }

    sendMessage.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            String msg = message.getText().toString();
            String phonenumber = phone.getText().toString();

            if (!TextUtils.isEmpty(msg) && !TextUtils.isEmpty(phonenumber)) {

                if (checkPermission(Manifest.permission.SEND_SMS)) {
                    SmsManager smsManager = SmsManager.getDefault();
                    smsManager.sendTextMessage(String.valueOf(phone), null, msg, null, null);
                } else {
                    Toast.makeText(MainActivity.this, "Permission denied", Toast.LENGTH_SHORT).show();
                }
            } else {
                Toast.makeText(MainActivity.this, "Enter a message and a phone number", Toast.LENGTH_SHORT).show();
            }
        }
    });

}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_VOLUME_DOWN)) {
        sendMessage.setEnabled(true);
        return true;
    } else if ((keyCode == KeyEvent.KEYCODE_VOLUME_UP)) {
        sendMessage.setEnabled(true);
        return true;
    } else
        return super.onKeyDown(keyCode, event);
}

private boolean checkPermission(String permission) {
    int checkPermission = ContextCompat.checkSelfPermission(this, permission);
    return checkPermission == PackageManager.PERMISSION_GRANTED;
}

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    switch (requestCode) {
        case SEND_SMS_PERMISSION_REQUEST_CODE:
            if (grantResults.length > 0 && (grantResults[0] == PackageManager.PERMISSION_GRANTED)) {
                sendMessage.setEnabled(true);
            }

            break;
    }
}
}

现在,当您按下音量键或释放音量键时,代码不会发送任何消息。您需要将以下内容添加到代码中:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_VOLUME_DOWN)) {
        String msg = message.getText().toString();
            String phonenumber = phone.getText().toString();

            if (!TextUtils.isEmpty(msg) && !TextUtils.isEmpty(phonenumber)) {

                if (checkPermission(Manifest.permission.SEND_SMS)) {
                    SmsManager smsManager = SmsManager.getDefault();
                    smsManager.sendTextMessage(String.valueOf(phone), null, msg, null, null);
                } else {
                    Toast.makeText(MainActivity.this, "Permission denied", Toast.LENGTH_SHORT).show();
                }
            } else {
                Toast.makeText(MainActivity.this, "Enter a message and a phone number", Toast.LENGTH_SHORT).show();
            }
      ...
    } 

此外,在onKeyDown的最后一段中,您缺少n个打开括号,否则将继续停止。什么意思?错误?请跟踪并提供错误日志。