1

我正在尝试在重新启动手机然后打开应用程序时启动一项活动,或者在启动完成时向我展示吐司

 class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {

    if (intent.getAction().equalsIgnoreCase(Intent.ACTION_BOOT_COMPLETED)) {
        Intent serviceIntent = new Intent(context, MyIntentService.class);
        context.startService(serviceIntent);
    }
}

}

这是我的广播接收器代码

 class MyIntentService extends Service {
@Override
public IBinder onBind(Intent intent) {
    return null;
}

@Override
public void onCreate() {
    super.onCreate();
    Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();
    // do something when the service is created
}

}

这是我的服务代码。

显现

 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">


    <receiver
        android:name=".MyReceiver"
        android:enabled="true"
        android:exported="false">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
    </receiver>

    <service android:name=".MyIntentService"></service>
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.NoActionBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

</application>

我正在尝试很多不同的代码,但没有人为我工作,所以任何人都可以帮助我更正这段代码

4

2 回答 2

1

BroadcastReceiver永远不会被调用,因为你在它的清单条目中有这个:

    android:exported="false"

删除它。

注意:您还需要确保您的应用在手机上安装后至少手动启动一次。否则你BroadcastReceiver将不会得到 BOOT_COMPLETE Intent

注意:此外,Toast用作调试辅助也不是一个好主意。您应该将消息写入 logcat 并使用它来确定您Service是否正在入门等Toast作为调试工具不可靠。

于 2016-01-05T13:29:07.630 回答
0

BroadcastReceiver在课堂上添加这个

public void onReceive(Context context, Intent intent) {
   if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) {
        Intent pushIntent = new Intent(context, SyncData.class);
        context.startService(pushIntent);
        Log.e("BroadCast Received", "ON BOOT COMPLETE");
   }
}

并删除这两行android:enabled="true" android:exported="false"

于 2016-01-05T13:10:58.943 回答