gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 06:06:21 30 4
gpt4 key购买 nike

我正在设置一个内部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/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com