我正在尝试实施AlarmManager,在2秒后重复调用服务请求以获取用户信息,如果有任何用户可用,则发送通知。
ComponentName receiver = new ComponentName(context, SampleBootReceiver.class);
PackageManager pm = context.getPackageManager();// here is an error
pm.setComponentEnabledSetting(receiver,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.shayer.samebirthday" >
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme" >
<activity android:name=".activites.MainActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".activites.LoginActivity" />
<activity android:name=".activites.RegisterActivity" />
<activity
android:name=".activites.SearchActivity"
android:label="@string/title_activity_search"
android:windowSoftInputMode="stateAlwaysHidden">
</activity>
<activity
android:name=".activites.ResultActivity"
android:label="@string/title_activity_result" >
</activity>
<activity
android:name=".activites.ChatBoardActivity"
android:label="@string/title_activity_chat_board" >
</activity>
</application>
<receiver android:name=".alarm.SampleAlarmReceiver" />
<receiver
android:name=".alarm.SampleBootReceiver"
android:enabled="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<service android:name=".alarm.SampleSchedulingService" />
</manifest>
03-11 16:59:57.328 32279-32279/com.shayer.samebirthday E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.shayer.samebirthday, PID: 32279
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.shayer.samebirthday/com.shayer.samebirthday.activites.MainActivity}: java.lang.IllegalArgumentException: Component class com.shayer.samebirthday.alarm.SampleBootReceiver does not exist in com.shayer.samebirthday
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2521)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2595)
at android.app.ActivityThread.access$800(ActivityThread.java:178)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1470)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5624)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754)
Caused by: java.lang.IllegalArgumentException: Component class com.shayer.samebirthday.alarm.SampleBootReceiver does not exist in com.shayer.samebirthday
at android.os.Parcel.readException(Parcel.java:1550)
at android.os.Parcel.readException(Parcel.java:1499)
at android.content.pm.IPackageManager$Stub$Proxy.setComponentEnabledSetting(IPackageManager.java:3414)
at android.app.ApplicationPackageManager.setComponentEnabledSetting(ApplicationPackageManager.java:1500)
at com.shayer.samebirthday.alarm.SampleAlarmReceiver.setAlarm(SampleAlarmReceiver.java:55)
at com.shayer.samebirthday.activites.MainActivity.onCreate(MainActivity.java:42)
at android.app.Activity.performCreate(Activity.java:6092)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1112)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2468)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2595)
at android.app.ActivityThread.access$800(ActivityThread.java:178)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1470)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5624)
at java.lang.reflect.Method.invoke(Native Method)
答案 0 :(得分:0)
请检查您的SampleBootReceiver是否在&#34; com.shayer.samebirthday.alarm&#34;包裹与否。如果不可用,请将SampleBootReceiver类移至&#34; com.shayer.samebirthday.alarm&#34;封装
答案 1 :(得分:0)
我有同样的问题,我做了下面写的内容;
1.以下代码行应修正错误
<receiver android:name=".alarm.SampleAlarmReceiver"
android:enabled="false">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
2。并在您的SampleAlarmReceiver.java类中,提供完整的类路径
ComponentName receiver = new ComponentName(context, <SampleBootReceiver full path>.class)