标签: android-broadcastreceiver

无法实例化接收器:类没有零参数

虽然我知道已经有一些答案,但我不太了解它们,因为我只是Android编程的初学者.我尝试使用以下代码实例化我的接收器:

<receiver
    android:name="com.example.android.exampleapp.MainActivity$NetworkChangeReceiver"
    android:enabled="true"
    android:label="NetworkChangeReceiver">
    <intent-filter>
        <action android:name="android.net.wifi.STATE_CHANGE" />
    </intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)

但它不起作用.logcat说:

java.lang.RuntimeException:
Unable to instantiate receiver com.example.android.exampleapp.MainActivity$NetworkChangeReceiver:
    java.lang.InstantiationException:
        class com.example.android.exampleapp.MainActivity$NetworkChangeReceiver has no zero argument constructor
Run Code Online (Sandbox Code Playgroud)

我在MainActivity.java中的部分代码如下所示:

public class NetworkChangeReceiver extends BroadcastReceiver {
    /* All my code that reacts when WiFi state changes are here */
}
Run Code Online (Sandbox Code Playgroud)

我知道这个问题听起来很容易,但我真的不知道如何解决这个错误.我读过这个(我认为它有点无效 - 我没有空的构造函数)和一堆其他在线教程,但我仍然无法得到它.任何帮助,将不胜感激 :)

java android broadcastreceiver android-broadcastreceiver

4
推荐指数
1
解决办法
3762
查看次数

即使在一个寄存器之后,Android BroadcastReceiver onReceive()在android 5.1.1上调用了两次

我无法弄清楚下面的代码有什么问题.我还检查了两次注册接收器.但事实并非如此.或者可能是我遗失了一些东西.可以请任何帮助.我真的需要它.:(

import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.os.IBinder;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.widget.Toast;

/**
 * 
 * @author Bharat
 *
 */
public class CallNotifierService extends Service 
{
    private static final String ACTION_IN = "android.intent.action.PHONE_STATE";
    private static final String ACTION_OUT = "android.intent.action.NEW_OUTGOING_CALL";
    private CallBr br_call;

    @Override
    public IBinder onBind(Intent arg0) 
    {
        return null;
    }

    @Override
    public void onDestroy() 
    {
        Log.d("service", "destroy");
        this.unregisterReceiver(this.br_call);
        super.onDestroy();
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId)
    { …
Run Code Online (Sandbox Code Playgroud)

android broadcastreceiver android-broadcastreceiver

4
推荐指数
2
解决办法
4483
查看次数

如何接收USB连接状态广播?

我正在尝试检测我的应用程序中的USB连接,即USB是否连接到设备。

正在棉花糖6.0.1(sdk23)上进行测试

但是我无法接收广播动作ACTION_USB_DEVICE_ATTACHED或ACTION_USB_DEVICE_DETACHED。

我尝试同时使用动态方式和AndroidManifest.xml方式,但均无效。

这是我的代码:

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.gokulnc.blah_blah"
    android:installLocation="auto"
    android:versionCode="15"
    android:versionName="1.5.1">

    <uses-feature android:name="android.hardware.usb.host" />

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="23" />

    <android:uses-permission android:name="android.permission.USB_PERMISSION" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:vmSafeMode="false">

        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/DrawerTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

            <receiver android:name="mUsbReceiver">
            <intent-filter>
                <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.hardware.usb.action.USB_DEVICE_DETACHED" />
            </intent-filter>
            </receiver>
        </activity>        
    </application>

</manifest>
Run Code Online (Sandbox Code Playgroud)

MainActivity.java

public class MainActivity extends AppCompatActivity {
    BroadcastReceiver mUsbReceiver;

    public void onCreate(Bundle savedInstanceState) {
        .....
        setBroadcastReceivers();
    }

    void setBroadcastReceivers() { …
Run Code Online (Sandbox Code Playgroud)

android android-intent android-broadcast android-broadcastreceiver

4
推荐指数
2
解决办法
8257
查看次数

无法从 adb shell 发送 android.intent.action.BOOT_COMPLETED

我正在构建一个应用程序,它需要在设备启动时自动启动服务。

我想用 adb 测试这个功能。当我从 adb 发出以下命令时

adb shell am broadcast -a android.intent.action.BOOT_COMPLETED
Run Code Online (Sandbox Code Playgroud)

我收到以下错误。

Broadcasting: Intent { act=android.intent.action.BOOT_COMPLETED }
java.lang.SecurityException: Permission Denial: not allowed to send broadcast android.intent.action.BOOT_COMPLETED from pid=3566, uid=2000
        at android.os.Parcel.readException(Parcel.java:1683)
        at android.os.Parcel.readException(Parcel.java:1636)
        at android.app.ActivityManagerProxy.broadcastIntent(ActivityManagerNative.java:3507)
        at com.android.commands.am.Am.sendBroadcast(Am.java:772)
        at com.android.commands.am.Am.onRun(Am.java:404)
        at com.android.internal.os.BaseCommand.run(BaseCommand.java:51)
        at com.android.commands.am.Am.main(Am.java:121)
        at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
        at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:262)
Run Code Online (Sandbox Code Playgroud)

根据这个答案stackoverflow.com/a/10105047/106248其他人没有遇到这个问题。

我测试的操作系统版本是Android 7.0。我在真实设备和模拟器上都面临同样的问题。

请帮我解决问题。

谢谢

android adb android-broadcastreceiver

4
推荐指数
1
解决办法
5267
查看次数

在React Native上设置Android BroadcastReceiver

我正在使用React Native构建应用程序,我想使用Android服务NotificationListenerService.为了从服务中捕获数据,我需要一个广播接收器.如何在React Native Environment中设置BroadcastReceiver?

service android react-native android-broadcastreceiver notification-listener

4
推荐指数
1
解决办法
6689
查看次数

即使强行关闭,非短信短信应用也可以在收到短信时接收广播吗?

因此,我已按照此指南显示收到短信时的简单吐司.虽然它在应用程序运行时正常工作,但当我进入设置并强制关闭应用程序时,它会停止工作.

我在StackOverflow上检查了很多关于simmilar问题的答案,但没有人真正回答是否(以及如何)在每次收到短信时都可以执行一段代码,而不会将应用程序设置为设备上的默认短信应用程序(Android) 4.4或以上版本).是吗?

考虑甚至可以停止服务,当发生这种情况时,服务不再是解决方案.

我对API等级19+感兴趣

谢谢

sms android android-broadcastreceiver

3
推荐指数
1
解决办法
487
查看次数

Android Fragment - BroadcastReceiver调用片段方法

我有一个BroadcastReceiver接收发送给Fragment的广播.我正在接收广播,但我如何从Fragment本身调用一个方法?一旦广播到达,我基本上需要更新List,List&update方法是Fragment的一部分.

public class FragmentReceiver extends BroadcastReceiver
{
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if(action != null && action.equals("AllTasksFragmentUpdate"))
        {
            //
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

注册接收者:

    @Override
public void onCreate(final Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    getActivity().registerReceiver(new FragmentReceiver(), new IntentFilter("AllTasksFragmentUpdate"));
}
Run Code Online (Sandbox Code Playgroud)

如何从Fragment中调用该方法?

android broadcastreceiver android-fragments android-broadcastreceiver

3
推荐指数
1
解决办法
2万
查看次数

Android广播接收器未注册错误

我已经使用 Intent 打开“位置设置”菜单以在我的 Activity 中启用GPS。调用 Intent 后,我​​使用了一个服务来监听位置更新。我BroadcastReceivers从 Service 发送了两个到 Activity。在onResume()Activity 的方法中,我想访问从服务传递的数据。但是当我单击后退按钮时,应用程序崩溃了。它说BroadcastReceiver尚未注册。但我已经注册了两个BroadcastReceivers.

\n\n

错误:

\n\n
\n

java.lang.RuntimeException:无法销毁活动 {com.example.jobinsabu.ohxee/com.example.jobinsabu.ohxee.AddOffers.AddOffers}:java.lang.IllegalArgumentException:接收器未注册:com.example.jobinsabu.ohxee。 AddOffers.AddOffers$7@8cd71b4\n 在 android.app.ActivityThread.performDestroyActivity(ActivityThread.java:4137)\n 在 android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:4155)\n 在 android.app.ActivityThread.access $1500(ActivityThread.java:177)\n 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1484)\n 在 android.os.Handler.dispatchMessage(Handler.java:102)\n 在 android.os .Looper.loop(Looper.java:135)\n 在 android.app.ActivityThread.main(ActivityThread.java:5910)\n 在 java.lang.reflect.Method.invoke(Native Method)\n 在 java.lang .reflect.Method.invoke(Method.java:372)\n 位于 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405)\n 位于 com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1200)\n 原因为:java.lang.IllegalArgumentException:接收器未注册:com.example.jobinsabu.ohxee.AddOffers.AddOffers$7@8cd71b4\n 位于 android.app.LoadedApk.forgetReceiverDispatcher(LoadedApk.java :830)\n 在 android.app.ContextImpl.unregisterReceiver(ContextImpl.java:1850)\n 在 android.content.ContextWrapper.unregisterReceiver(ContextWrapper.java:518)\n 在 com.example.jobinsabu.ohxee.AddOffers。 AddOffers.onDestroy(AddOffers.java:448)\n 位于 android.app.Activity.performDestroy(Activity.java:6418)\n 位于 android.app.Instrumentation。callActivityOnDestroy(Instrumentation.java:1153)\n 在 android.app.ActivityThread.performDestroyActivity(ActivityThread.java:4124)\n 在 android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:4155)\xc2\xa0\n 在 android .app.ActivityThread.access$1500(ActivityThread.java:177)\xc2\xa0\n 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1484)\xc2\xa0\n 在 …

android illegalargumentexception android-broadcastreceiver

3
推荐指数
1
解决办法
8154
查看次数

android BroadcastReceiver 调用了两次

我正在从事聊天项目

我在这里所做的是与连接人员的服务,我设置了一个广播接收器以从服务获取数据

这是接收者代码

mMessageReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            try {
                final String code = intent.getExtras().get("code").toString();
                final JSONObject Message = new JSONObject(intent.getExtras().get("msg").toString());
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        Log.d("test","test");
                    }
                });
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    };

    LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver,new IntentFilter("data"));
Run Code Online (Sandbox Code Playgroud)

问题是当我关闭活动时 runOnUiThread 内的代码调用多次

如果我关闭活动并打开它,它会调用 2 次,如果我再次执行它,它会调用 3 次,依此类推

android broadcast broadcastreceiver android-runonuithread android-broadcastreceiver

3
推荐指数
1
解决办法
4370
查看次数

Android 重启后未收到启动完成通知

我在应用程序清单中注册了一个广播接收器来接收 BOOT_COMPLETED 通知。重新启动移动设备后,我没有收到任何通知。但是,当我打开应用程序时,我确实收到了通知。请协助。

从我的清单中接收启动完成权限:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
Run Code Online (Sandbox Code Playgroud)

我的清单中的接收者:

    <receiver android:name=".BootCompletedReceiver">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
    </receiver>
Run Code Online (Sandbox Code Playgroud)

BootCompletedReceiver 类:

public class BootCompletedReceiver extends BroadcastReceiver {

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

        Toast.makeText(context, "Boot Completed Received", Toast.LENGTH_LONG).show();
    }
Run Code Online (Sandbox Code Playgroud)

android android-manifest android-broadcastreceiver

3
推荐指数
1
解决办法
6064
查看次数