【问题标题】:Android BroadcastReceiver behaviourAndroid BroadcastReceiver 行为
【发布时间】:2014-08-11 14:31:04
【问题描述】:

我有一个普通的 java 类(不是 Activity),它实现了我的应用程序的一个元素,包括一个带有 2 个动作的通知:第一个动作触发一个 PendingIntent 启动一个全新的活动,而另一个广播一个意图,它将陷入扩展 BroadcastReceiver 的 Receiver 类中,一切顺利(现在只播放 RAW 目录中的声音) 由于我需要更新在第一个 java 类中实现的对象的特定方面,我将接收器放在我的类中,以这种方式扩展 BroadcastReceiver,但根本不播放测试声音。 onReceive 方法中的代码在两个类中是相同的。

SingleInstance.java

package com.thepier.ingresstimer;

*various imports*
public class SingleInstance extends BroadcastReceiver {

/* Notification Misc */
private int ID;
private NotificationManager nm;

/* App context */
private Context cntx;

/* Contatore */
private int intCounter = 0;

/* Portal Data */
private int hackMax = 4; /* hackMax minimo */
private long coolTime = 300000; /* millisecondi = 5 minuti */
private long burnTime = 14400000; /* millisecondi = 4 ore */

/* Portal Cooldowns */
CountDownTimer cooldownTimer;
CountDownTimer burnoutTimer;

*other code*

public void showNotification () {

    Intent intentPref = new Intent(cntx, PreferencesActivity.class);
    PendingIntent pIntent1 = PendingIntent.getActivity(cntx, 0, intentPref, 0);

    Intent intentHack = new Intent(cntx, SingleInstance.class);
    //OR Intent intentHack = new Intent(cntx, HackReceiver.class);
    intentHack.putExtra("ID", this.ID);
    intentHack.putExtra("maxH", this.hackMax);
    intentHack.putExtra("curH", this.intCounter);
    PendingIntent pIntent2 = PendingIntent.getBroadcast(cntx, 0, intentHack, 0);

    NotificationCompat.Builder mBuilder =
            new NotificationCompat.Builder(cntx)
            .setSmallIcon(R.drawable.ic_launcher)
            .setContentTitle("Cooldown terminato")
            .setTicker("Cooldown terminato")
            .addAction(R.drawable.ic_action_new, "Hack", pIntent2)
            .addAction(R.drawable.ic_action_settings, "Impostazioni", pIntent1)
            .setContentText("Hack: "+intCounter+"/"+hackMax);

    nm.notify(ID, mBuilder.build());
}

@Override
public void onReceive(Context context, Intent intent) {
    // TODO Auto-generated method stub
    MediaPlayer mediaPlayer = MediaPlayer.create(context, R.raw.sfx_portal_hacking_alien);
    mediaPlayer.start();
}
}

HackReceiver.java

package com.thepier.ingresstimer;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.media.MediaPlayer;

public class HackReceiver extends BroadcastReceiver {
    public HackReceiver() {
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO: This method is called when the BroadcastReceiver is receiving
        // an Intent broadcast.
            // TODO Auto-generated method stub
            MediaPlayer mediaPlayer = MediaPlayer.create(context, R.raw.sfx_portal_hacking_alien);
            mediaPlayer.start();


    }
}

【问题讨论】:

  • 您是否像注册第二个一样注册了第一个?
  • 现在可以工作了,忘记了 BroadcastReceiver 需要的空构造函数

标签: java android android-intent broadcastreceiver


【解决方案1】:

问题解决:忘记了 BroadcastReceiver 需要的空构造函数

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多