Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.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 广播接收机';s";onReceive";方法从未被调用_Java_Android_Broadcastreceiver_Android Pendingintent - Fatal编程技术网

Java 广播接收机';s";onReceive";方法从未被调用

Java 广播接收机';s";onReceive";方法从未被调用,java,android,broadcastreceiver,android-pendingintent,Java,Android,Broadcastreceiver,Android Pendingintent,我正在设置一个内部的广播接收器,以获取活动转换更新,例如在车内行走。但是从未调用onReceive方法 onCreate @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (To

我正在设置一个内部的
广播接收器
,以获取活动转换更新,例如在车内行走。但是从未调用onReceive方法

onCreate

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        Intent intent = new Intent(TRANSITIONS_RECEIVER_ACTION);
        mPendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, intent, 0);

        mTransitionsReceiver = new TransitionsReceiver();
        registerReceiver(mTransitionsReceiver, new IntentFilter(TRANSITIONS_RECEIVER_ACTION));

        mLogFragment = (LogFragment) getSupportFragmentManager().findFragmentById(R.id.log_fragment);
    }

setupActivityTransitions();
setupActivityTransitions()
方法


    ActivityTransitionRequest request = new ActivityTransitionRequest(transitions);
        // Register for Transitions Updates.
        Task<Void> task =
                ActivityRecognition.getClient(this)
                        .requestActivityTransitionUpdates(request, mPendingIntent);
        task.addOnSuccessListener(
                new OnSuccessListener<Void>() {
                    @Override
                    public void onSuccess(Void result) {
                        Log.i(TAG, "Transitions Api was successfully registered.");
                    }
                });
        task.addOnFailureListener(
                new OnFailureListener() {
                    @Override
                    public void onFailure(Exception e) {
                        Log.e(TAG, "Transitions Api could not be registered: " + e);
                    }
                });

要调用您的
onReceive()
,您必须添加这些-

  • 以这种方式将您的广播接收器添加到清单中-

  • 在活动中调用
    registerReceiver()
    。 另外,不要忘记调用
    unegisterReceiver()
    ,以避免泄漏


您必须在清单中为您的接收人注册您想要的操作:

   <receiver android:name=".Your_receiver_name" >
        <intent-filter>
            <action android:name="THE_ACTION_NAME"
                    android:exported="false"/>
        </intent-filter>
    </receiver>


您是否在舱单中注册了接收人<代码>?对于BroadcastReceiver类,您必须在您的清单中注册您的接收者,该清单将广播您希望得到通知的活动。您在Manifest类中注册了吗?
我已经创建了BroadcastReceiver类作为mainActivity的内部类。我是否应该在清单中注册我的BroadcastReceiver类,即使它是一个内部类@Kamran Aliyes您使用的是BroadCastReceiver类,您必须在清单中注册它,如果您的用例在应用程序中,请仅使用LocalBroadCast receiver扩展您的类。在这种情况下,您不需要注册它,若您使用的是fragment,若活动使用onCreate和onDestroy,那个么您可以在附加或分离片段时简单地注册或取消注册它。如果您还有什么不明白的地方,请告诉我,我将为您共享一段代码片段。我已将BroadcastReceiver类创建为mainActivity的内部类。我是否应该在清单中注册我的BroadcastReceiver类,即使它是一个内部类???尝试单独创建一个广泛的接收方。我没有将我的BroadcastReceiver类创建为mainActivity的内部类。我是否应该在清单中注册我的BroadcastReceiver类,即使它是一个内部类???不,在这种情况下,不需要在清单中注册。它应该会起作用,只需尝试将您的
转换\u接收器\u操作
更改为其他操作即可。我怀疑这个问题可能是因为您没有将它用作内部类或单独的类,如果您使用的是BraodCast类,您必须在清单中注册它才能侦听您想要的任何活动。同意,对于隐式广播,只需签入清单是不必要的,但是对于自定义/显式广播是必需的。
   <receiver android:name=".Your_receiver_name" >
        <intent-filter>
            <action android:name="THE_ACTION_NAME"
                    android:exported="false"/>
        </intent-filter>
    </receiver>