gpt4 book ai didi

android - 应用内广播接收器

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:08:47 26 4
gpt4 key购买 nike

谁能告诉我创建应用程序内 BroadcastReceiver 的方法?我已经创建了 BroadcastReceiver,它 Toasts 一条消息。它甚至在应用程序处于后台状态时也能工作,我希望它仅在应用程序处于前台时工作。

  public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.registerReceiver(this.mConnReceiver, new IntentFilter(
ConnectivityManager.CONNECTIVITY_ACTION));
}

private BroadcastReceiver mConnReceiver = new BroadcastReceiver() {

public void onReceive(Context context, Intent intent) {
boolean noConnectivity = intent.getBooleanExtra(
ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);
String reason = intent
.getStringExtra(ConnectivityManager.EXTRA_REASON);
boolean isFailover = intent.getBooleanExtra(
ConnectivityManager.EXTRA_IS_FAILOVER, false);

NetworkInfo currentNetworkInfo = (NetworkInfo) intent
.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
NetworkInfo otherNetworkInfo = (NetworkInfo) intent
.getParcelableExtra(ConnectivityManager.EXTRA_OTHER_NETWORK_INFO);

if (currentNetworkInfo.isConnected()) {
System.out.println("Connected");
Toast.makeText(getApplicationContext(), "Connected",
Toast.LENGTH_LONG).show();
} else {
System.out.println("Not Connected");
Toast.makeText(getApplicationContext(), "Not Connected",
Toast.LENGTH_LONG).show();
}
}
};

}

So here is my code which is checking network state and generating a BroadcastReceiver. I haven't added anything in manifest.

最佳答案

有很多方法可以做到这一点。我能想到的前两个是这样的:

  1. 如果您的 <receiver>在 list 中声明为 <intent-filter> ,您可以在您的应用程序中启用和禁用它,以便仅当应用程序位于前台时才启用它。为此,首先通过添加 android:enabled="false" 来禁用接收器。到 <receiver> 的 list 条目.现在,当您的应用程序运行时,在 onResume()你想启用接收器。使用 PackageManager.setComponentEnabledSetting()去做这个。当您的 Activity 进入后台时,在 onPause()您可以再次禁用接收器。

  2. 动态注册和注销接收器。为此,您不需要在 list 中声明接收者。在您的应用程序中,创建一个 BroadcastReceiver 的实例在onResume()调用registerReceiver()使用适当的 Intent 过滤器。当应用程序进入后台时,在 onPause()调用unregisterReceiver()删除它。接收方将只接收对 onReceive() 的调用当应用程序在前台时。

关于android - 应用内广播接收器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18736587/

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