Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.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开机启动服务,can';我没有收到广播_Java_Android_Android Service_Android Broadcast - Fatal编程技术网

Java Android开机启动服务,can';我没有收到广播

Java Android开机启动服务,can';我没有收到广播,java,android,android-service,android-broadcast,Java,Android,Android Service,Android Broadcast,我的服务不会在系统启动时启动,只有当用户按下刷新按钮时才会启动。我尝试了在堆栈中搜索的所有内容,但没有任何内容。我已经将代码重写了4次,也没有任何内容。我希望我的服务在一个时间间隔内运行,当按下刷新按钮时,我无法理解为什么不能在启动时运行,我错过了什么吗 Manifest.xml <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.moody" android:i

我的服务不会在系统启动时启动,只有当用户按下刷新按钮时才会启动。我尝试了在堆栈中搜索的所有内容,但没有任何内容。我已经将代码重写了4次,也没有任何内容。我希望我的服务在一个时间间隔内运行,当按下刷新按钮时,我无法理解为什么不能在启动时运行,我错过了什么吗

Manifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.moody"
android:installLocation="internalOnly"
android:versionCode="0"
android:versionName="0.6.7.2 alpha" >

<permission
    android:name="com.android.moody.permission.GET_SERVER_DATA"
    android:protectionLevel="normal" />

<uses-sdk
    android:maxSdkVersion="18"
    android:minSdkVersion="14"
    android:targetSdkVersion="17" />

<uses-permission android:name="com.android.moody.permission.GET_SERVER_DATA" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

<application
    android:allowBackup="true"
    android:allowClearUserData="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="activities.MainActivity"
        android:label="@string/app_name" >
    </activity>
    <activity
        android:name="activities.Menu_esq"
        android:label="@string/title_activity_menu_esq" >
    </activity>
    <activity
        android:name="activities.BaseActivity"
        android:label="@string/title_activity_base" >
    </activity>
    <activity
        android:name="activities.MainView"
        android:label="@string/title_activity_main_view" >
    </activity>
    <activity
        android:name="activities.LoginActivity"
        android:label="@string/app_name"
        android:noHistory="true"
        android:windowSoftInputMode="adjustResize|stateVisible" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name="com.example.moody.LeftActivity"
        android:label="@string/title_activity_left" >
    </activity>
    <activity
        android:name="com.example.moody.RightActivity"
        android:label="@string/title_activity_right" >
    </activity>
    <activity
        android:name="activities.UserDetailsActivity"
        android:label="@string/title_activity_user_details" >
    </activity>
    <activity
        android:name="fragments.FragTopicsPreview"
        android:label="@string/title_activity_copy_of_topics_preview" >
    </activity>
    <activity android:name="activities.LoadingActivity" >
    </activity>

    <service
        android:name="service.ServiceBackground"
        android:enabled="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/moody_service" >
    </service>

    <receiver android:name="service.Alarm" >
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
    </receiver>
    <receiver
        android:name="service.StartServiceReceiver"
        android:permission="com.android.moody.permission.GET_SERVER_DATA" >
        <intent-filter>
            <action android:name="moody_get_data" />
        </intent-filter>
    </receiver>
</application>
警报

public class Alarm extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    context.startService(new Intent(context, ServiceBackground.class));
}

public void setAlarm(Context context) {
    String alarm = Context.ALARM_SERVICE;
    AlarmManager am = (AlarmManager) context.getSystemService(alarm);

    Intent intent = new Intent("moody_get_data");
    PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0);

    int type = AlarmManager.ELAPSED_REALTIME_WAKEUP;
    // long interval = AlarmManager.INTERVAL_FIFTEEN_MINUTES;
    long interval = 1000 * 60 * 2;
    long triggerTime = SystemClock.elapsedRealtime() + interval;

    am.setRepeating(type, triggerTime, interval, pi);

}

public void CancelAlarm(Context context) {
    Intent intent = new Intent(context, Alarm.class);
    PendingIntent sender = PendingIntent
            .getBroadcast(context, 0, intent, 0);
    AlarmManager alarmManager = (AlarmManager) context
            .getSystemService(Context.ALARM_SERVICE);
    alarmManager.cancel(sender);
}
}

启动服务接收器

public class StartServiceReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    Log.d("service", "Starting service from serviceReceiver");

    Intent service = new Intent(context, ServiceBackground.class);
    context.startService(service);
}
}

注释

  • 我已经尝试过不使用过滤器直接启动服务,但是 没有理由不启动,所以使用过滤器是唯一的方法 成功了
  • 我也尝试过不使用StartServiceReceiver.java,目的是在警报中,但运气不好,如果有人认为这是问题所在,我可以再次更改代码
  • 我在线程中运行while(isRunning)只是为了将来的目的,但我认为问题不在于此

与我的一个实现相比,清单中有一些小差异:

  • 使用权限(似乎与您的相同)

  • 接受者

    <receiver
        android:name="com.<!your activity!>"
        android:permission="android.permission.RECEIVE_BOOT_COMPLETED" >
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
    </receiver>
    
    
    

Yoiu看到有一个关于权限的附加条目。

与我的一个实现相比,清单中有一些小差异:

  • 使用权限(似乎与您的相同)

  • 接受者

    <receiver
        android:name="com.<!your activity!>"
        android:permission="android.permission.RECEIVE_BOOT_COMPLETED" >
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
    </receiver>
    
    
    

you看到有一个关于权限的附加条目。

您使用的是Htc设备吗?如果是,请检查以下内容:否,我使用的是genyMotion emulator和nexus 4您使用的是Htc设备吗?如果是,请检查以下内容:否,我使用的是genyMotion emulator和nexus 4您救了我一天的命。谢谢!!巨大的帮助:D我自己永远看不到这个条目。您呢已经救了我一天。谢谢!!帮了大忙:D我自己永远也看不到那个条目了。