Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.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 计划alarmmanager无法重新启动我的手机_Java_Android_Alarmmanager_Alarm_Android Broadcastreceiver - Fatal编程技术网

Java 计划alarmmanager无法重新启动我的手机

Java 计划alarmmanager无法重新启动我的手机,java,android,alarmmanager,alarm,android-broadcastreceiver,Java,Android,Alarmmanager,Alarm,Android Broadcastreceiver,在我没有重新启动手机之前,我一直在举杯庆祝,但在重新启动广播后,Receiver2没有收到任何消息,也没有发生任何事情 我跟了很多人,但什么也没发生 AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.k2.alarmmanagerdemo"&

在我没有重新启动手机之前,我一直在举杯庆祝,但在重新启动广播后,Receiver2没有收到任何消息,也没有发生任何事情

我跟了很多人,但什么也没发生

AndroidManifest.xml

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

    <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>
        <receiver android:name="com.k2.alarmmanagerdemo.MyBroadcastReceiver"
            android:enabled="true">
        </receiver>
        <receiver android:name="com.k2.alarmmanagerdemo.BroadCastRecevier2"
            android:enabled="true"
            android:exported="true"
            android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
                <action android:name="android.intent.action.QUICKBOOT_POWERON"/>
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </receiver>

    </application>

</manifest>
MyBroadcastReceiver.java

public class MainActivity extends Activity {
    Button b1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        b1=(Button) findViewById(R.id.button1);

        b1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                startAlert();
            }
        });
    }


    public void startAlert() {
        EditText text = (EditText) findViewById(R.id.time);
        int i = Integer.parseInt(text.getText().toString());
        Intent intent = new Intent(this, MyBroadcastReceiver.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(
                this.getApplicationContext(), 234324243, intent, 0);
        AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis(),
                1000 * 5,pendingIntent);
        Toast.makeText(this, "Alarm set in " + i + " seconds",Toast.LENGTH_LONG).show();
    }
}
public class MyBroadcastReceiver extends BroadcastReceiver {

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

        Toast.makeText(context, "Alarm...." + System.currentTimeMillis(), Toast.LENGTH_SHORT).show();
        Log.i("Alarm.", "alarm called" + System.currentTimeMillis());    

    }
}
public class BroadCastRecevier2 extends BroadcastReceiver {

    MainActivity activity = new MainActivity();
    @Override
    public void onReceive(Context context, Intent intent) {


        activity.startAlert();
        if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {
            Intent i = new Intent();
            i.setClassName("com.k2.alarmmanagerdemo",
                    "com.k2.alarmmanagerdemo.MainActivity");
            i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(i);
            Toast.makeText(context, "BOOT", Toast.LENGTH_SHORT).show();
            Log.i("myboot","boot compleated inside");

        }
    }
}
broadcastReceiveR2.java

public class MainActivity extends Activity {
    Button b1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        b1=(Button) findViewById(R.id.button1);

        b1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                startAlert();
            }
        });
    }


    public void startAlert() {
        EditText text = (EditText) findViewById(R.id.time);
        int i = Integer.parseInt(text.getText().toString());
        Intent intent = new Intent(this, MyBroadcastReceiver.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(
                this.getApplicationContext(), 234324243, intent, 0);
        AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis(),
                1000 * 5,pendingIntent);
        Toast.makeText(this, "Alarm set in " + i + " seconds",Toast.LENGTH_LONG).show();
    }
}
public class MyBroadcastReceiver extends BroadcastReceiver {

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

        Toast.makeText(context, "Alarm...." + System.currentTimeMillis(), Toast.LENGTH_SHORT).show();
        Log.i("Alarm.", "alarm called" + System.currentTimeMillis());    

    }
}
public class BroadCastRecevier2 extends BroadcastReceiver {

    MainActivity activity = new MainActivity();
    @Override
    public void onReceive(Context context, Intent intent) {


        activity.startAlert();
        if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {
            Intent i = new Intent();
            i.setClassName("com.k2.alarmmanagerdemo",
                    "com.k2.alarmmanagerdemo.MainActivity");
            i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(i);
            Toast.makeText(context, "BOOT", Toast.LENGTH_SHORT).show();
            Log.i("myboot","boot compleated inside");

        }
    }
}

广播接收者2的
声明中删除此行:

android:permission="android.permission.RECEIVE_BOOT_COMPLETED"
标记中的那一行告诉系统,只有具有此权限的包才允许向类发送
意图。这可能会混淆系统,并阻止将
意图
发送给您的接收者


在了解警报和引导完成接收器时,您可能会发现这一点很有帮助。

您正在测试的设备是什么?Lyf flame 6、带oreo操作系统的模拟器和nox player。先生,这不起作用。您可以提出更多建议吗。该链接给了我一个项目,但该项目未在我的系统上运行,问题:重新启动时应用程序不工作。您必须先启动该应用程序一次,然后才能向其发送已完成的
引导\u
广播。