java - BroadcastReceiver的 "onReceive"方法从未被调用

标签 java android broadcastreceiver android-pendingintent

我正在设置一个内部BroadcastReceiver来获取 Activity 转换更新,例如步行、in_Vehicle。但 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);
                    }
                });

广播接收器

public class TransitionsReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            Log.d("@2345","dfhudfdf");
            if (!TextUtils.equals(TRANSITIONS_RECEIVER_ACTION, intent.getAction())) {
                mLogFragment.getLogView()
                        .println("Received an unsupported action in TransitionsReceiver: action="
                                + intent.getAction());
                return;
            }
            if (ActivityTransitionResult.hasResult(intent)) {
                ActivityTransitionResult result = ActivityTransitionResult.extractResult(intent);
                for (ActivityTransitionEvent event : result.getTransitionEvents()) {
                    String activity = toActivityString(event.getActivityType());
                    String transitionType = toTransitionType(event.getTransitionType());
                    mLogFragment.getLogView()
                            .println("Transition: "
                                    + activity + " (" + transitionType + ")" + "   "
                                    + new SimpleDateFormat("HH:mm:ss", Locale.US)
                                    .format(new Date()));
                }
            }
        }
    }

最佳答案

获取您的onReceive()调用,您将必须添加这些 -

  • 将您的 BroadcastReceiver 添加到 list 中,以这种方式 -

    <receiver android:name="YourReceiver"> <intent-filter> <action android:name="YourAction" /> </intent-filter> </receiver>

  • 调用 registerReceiver()在你的 Activity 中。 另外,别忘了调用unegisterReceiver()以避免泄漏。

关于java - BroadcastReceiver的 "onReceive"方法从未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55938937/

相关文章:

java - Spring-mvc 3.0 应用程序 session 范围

Android ValueAnimator 在重复期间暂停

android - Genymotion shell 是否有查看我的数据库的命令?

android - Firebase 身份验证 : Getting an AuthCredential after sign in using FirebaseUI-Android

java - Activity 已泄漏 IntentReceiver - LollipopBrowserAccessibilityManager

android - 等到手机屏幕亮起

java - eBay 交易 API getOrders : check if order is marked as shipped

java - 在 NetBeans 中添加 keyczar 作为 Maven 依赖项

android - 广播接收器在主线程上运行?

java - 使用最新的 Jetty 和 Jersey 在上传到 Heroku 的 WAR 文件中找不到依赖类