简体   繁体   English

未从警报管理器调用广播接收器

[英]Broadcast Reveiver not being called from Alarm Manager

I've searched the archives and still can't resolve my issue. 我搜索了档案,但仍然无法解决我的问题。

I'm trying to take an user input in seconds that will call the broadcast receiver to create a toast message and vibrate the phone. 我正在尝试在几秒钟内接受用户输入,这将调用广播接收器以创建Toast消息并振动电话。 However, the broadcast receiver is never called and I can't figure it out. 但是,广播接收机从未被调用过,我无法弄清楚。 My code is below. 我的代码如下。

Thanks! 谢谢!

package com.example.cs984x.alrm;

import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Intent;
import android.content.IntentFilter;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button btn1 = (Button) findViewById(R.id.button1);
    btn1.setOnClickListener(new View.OnClickListener() {
        @Override
         public void onClick(View v) {
            EditText inputSeconds = (EditText) findViewById(R.id.editText1);
            int inputTime = Integer.parseInt(inputSeconds.getText().toString());
            Toast.makeText(MainActivity.this, "The alarm will go off in " + inputTime + " seconds.", Toast.LENGTH_LONG).show();
            AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
            Intent myIntent = new Intent(MainActivity.this, MyReceiver.class);
            myIntent.setAction("com.example.cs984x.alrm.vibrate");
            PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, myIntent,0);
            alarmManager.set(AlarmManager.RTC_WAKEUP,   System.currentTimeMillis()+(inputTime*1000), pendingIntent);


        }
    });
}
}

Broadcast Receiver Class: 广播接收器类别:

package com.example.cs984x.alrm;

import android.app.AlarmManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Vibrator;
import android.widget.EditText;
import android.widget.Toast;

import static android.content.Context.ALARM_SERVICE;


public class MyReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {

    Toast.makeText(context, "Your time is up", Toast.LENGTH_LONG).show();
    Vibrator v;
    v= (Vibrator)context.getSystemService(Context.VIBRATOR_SERVICE);
    v.vibrate(2000);

}

}

Manifest: 表现:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.cs984x.alrm">
<uses-permission android:name="android.permission.VIBRATE" >
</uses-permission>

    <application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    </application>


    <receiver

    android:name=".MyReceiver" android:process=":remote"

    android:enabled="true">

  <intent-filter>

        <action android:name="com.example.cs984x.alrm.vibrate" />

    </intent-filter>

</receiver>


</manifest>

Add action to intent: 向意图添加动作:

Intent myIntent = new Intent(MainActivity.this, MyReceiver.class);
myIntent.setAction("YourPackageName.YourAction");
            PendingIntent pendingIntent =PendingIntent.getBroadcast(MainActivity.this, 0, myIntent,0);

in AndroidManifest: 在AndroidManifest中:

<intent-filter>
                <action android:name="YourPackageName.YourAction" />
            </intent-filter>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM