android - 包中不存在接收器类

标签 android broadcastreceiver package-managers

我正在尝试实现 AlarmManager,以便在 2 秒后重复调用服务请求,以获取附近的用户信息,如果有可用的用户,则发送通知。

SampleAlarmReceiver.java

  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);

AndroidManifest.xml

<?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)

最佳答案

我遇到了同样的问题,我做了下面写的事情;

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)

关于android - 包中不存在接收器类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35939250/

相关文章:

npm - 在 devDependencies 中添加内容后,如何防止 yarn 运行 package.json 脚本?

android:短信广播接收器无法获取较大短信的全文

java - 从 android 操作系统中检索国家/地区列表

android - 判断 Parent 是 Activity 还是 FragmentActivity

android - 使用 ListPreference 更改背景颜色

java - Android Studio - 权限拒绝,需要 android.permission.RECEIVE_SMS 错误

android - 无法从 Android 10 上的 BroadcastReceiver 启动 Activity

python - pip 和 conda 有什么区别?

node.js - 由于 Yarn 和 npm 锁文件冲突,Heroku 构建失败

java - 发生未知错误,请检查 HTTP 结果代码和服务器响应的内部异常