简体   繁体   English

android broadcastReceiver无法正常工作

[英]android broadcastReceiver not working

This is my supposed to work code according to Apress Android Recipes book: 根据Apress Android Recipes的书,这是我应该工作的代码:

package com.tugce.AlarmActivity;
public class AlarmActivity extends Activity implements OnClickListener {

    private PendingIntent mAlarmIntent;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        findViewById(R.id.start).setOnClickListener(this);
        findViewById(R.id.stop).setOnClickListener(this);

        Intent launchIntent = new Intent(this,AlarmReceiver.class);
        mAlarmIntent = PendingIntent.getBroadcast(this, 0, launchIntent, 0);
    }

    @Override
    public void onClick(View v) {
        AlarmManager manager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
        long interval = 2000;

        switch (v.getId()) {
        case R.id.start:
            Toast.makeText(this, "Scheduled", Toast.LENGTH_SHORT).show();
            manager.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime()+interval, interval, mAlarmIntent);
            break;

        case R.id.stop:
            Toast.makeText(this, "Canceled", Toast.LENGTH_LONG).show();
            manager.cancel(mAlarmIntent);
            break;

            default:
                break;
        }

    }

    public class AlarmReceiver extends BroadcastReceiver {

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

            Calendar now = Calendar.getInstance();
            DateFormat formatter = SimpleDateFormat.getDateTimeInstance();
            Toast.makeText(context, formatter.format(now.getTime()),
                    Toast.LENGTH_SHORT).show();

        }

    }
}

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.tugce.AlarmActivity"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="10" />

    <application android:icon="@drawable/icon" android:label="@string/app_name">

        <receiver android:name=".AlarmReceiver"></receiver>
        <activity android:name=".AlarmActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
</manifest>

I can't see any time stamp on the screen. 我在屏幕上看不到任何时间戳。

Is your receiver an inner class? 你的接收者是内在阶级吗? It should not be. 它不应该。 Put it in its own Java file. 把它放在自己的Java文件中。 Android can't instantiate it otherwise. 否则Android无法实例化它。

I haven't tried it myself, but do you may need to set this permission: 我自己没试过,但你可能需要设置这个权限:

SET_ALARM Permission SET_ALARM权限

How to set Receiver's Permissions 如何设置Receiver的权限

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

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