Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.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 BroadcastReceiver工作正常(Android)_Java_Android_Broadcastreceiver_Intentservice - Fatal编程技术网

Java BroadcastReceiver工作正常(Android)

Java BroadcastReceiver工作正常(Android),java,android,broadcastreceiver,intentservice,Java,Android,Broadcastreceiver,Intentservice,大家好! 在receiver StartServiceReceiver中的my program onReceive方法中,由启动程序(或旋转屏幕)触发,意图包含“android.net.wifi.STATE_CHANGE”。 这怎么可能? 谢谢 公共类KsivaFTPApacheActivity扩展活动{ Context=null; 广播接收机StartService; 广播接收状态; 私有最终IntentFilter StartServiceFilter=新IntentFilter(); 私有

大家好! 在receiver StartServiceReceiver中的my program onReceive方法中,由启动程序(或旋转屏幕)触发,意图包含“android.net.wifi.STATE_CHANGE”。 这怎么可能? 谢谢

公共类KsivaFTPApacheActivity扩展活动{
Context=null;
广播接收机StartService;
广播接收状态;
私有最终IntentFilter StartServiceFilter=新IntentFilter();
私有最终IntentFilter GetStatusFilter=新IntentFilter();
公共静态最终字符串CUSTOM_INTENT=“com.imholynx.KsivaFTPApache.INTENT.start”;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
StartServiceFilter.addAction(WifiManager.NETWORK\u STATE\u CHANGED\u ACTION);
StartServiceFilter.addAction(定制目的);
StartService=新的StartServiceReceiver();
GetStatusFilter.addAction(“AppService”);
GetStatus=新的GetStatusReceiver();
此.registerReceiver(StartService、StartService筛选器);
这个.registerReceiver(GetStatus,GetStatusFilter);
}
@凌驾
恢复时公开作废(){
super.onResume();
}
@凌驾
公共无效暂停(){
super.onPause();
}
@凌驾
受保护的空onDestroy(){
super.ondestory();
这是未注册的接收器(StartService);
此。取消注册接收者(GetStatus);
stopService(新意图(这个,ksivaftpacheservice.class));
}
公共类StartServiceReceiver扩展了BroadcastReceiver{
@凌驾
公共void onReceive(上下文、意图){
Log.i(“State”,intent.getAction());
Bundle b=intent.getExtras();
ConnectivityManager cm=(ConnectivityManager)context.getSystemService(context.CONNECTIVITY_服务);
{
NetworkInfo ni=null;
ni=cm.getActiveNetworkInfo();
如果(ni!=null)
如果(ni.isConnected()){
意图;
Log.i(“INFO”,((整数)Files.size()).toString());
如果(!Files.isEmpty())
对于(int i=0;i
因为您将该意图添加到通过以下行传递给接收方的意图过滤器中:

StartServiceFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);

在注册接收者之前,清单中可能没有意图筛选器。如果你找不到它是从哪里来的,只需在你的接收器上添加一些支票,如下所示:

@Override
public void onReceive(Context arg0, Intent arg1) {

if (! arg1.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
    return;
}

//....
}

运行此代码时发生了什么?你确定你已经在manifest.xml中注册了意图吗?如果我在注册接收者之后添加此意图过滤器,接收者将不会获得此意图。正确,根本不添加它。你的问题是“为什么wifi状态更改会触发我的接收器?”我以为你不希望他们这样做,所以如果你只是希望自定义意图触发接收器,请不要添加该意图。对不起,我可以正确翻译吗。我的意思是,当我旋转手机或运行程序时,会触发接收器。
@Override
public void onReceive(Context arg0, Intent arg1) {

if (! arg1.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
    return;
}

//....
}