隐式广播

时间:2017-03-22 17:51:55

标签: android broadcastreceiver

“针对Android O的应用无法再在其清单中为隐式广播注册广播接收器。”

ACTION_VIEW是隐式广播。

根据上述声明,人们不能再注册清单中任何URI的广播接收器。此时侦听URI的唯一方法是应用程序是否已在运行?

1 个答案:

答案 0 :(得分:2)

  

ACTION_VIEW是隐式广播。

通常不是。 - (void)startDecodingAudio { if (!_converterConfigured){ return; } while (true){ if ([self hasFramesToDecode]){ struct MyUserData userData = {1, (UInt32)_decoderBuffer[_currPosInDecoderBuf].length, _decoderBuffer[_currPosInDecoderBuf].bytes}; uint8_t *buffer = (uint8_t *)malloc(128 * sizeof(short int)); AudioBufferList decBuffer; decBuffer.mNumberBuffers = 1; decBuffer.mBuffers[0].mNumberChannels = 1; decBuffer.mBuffers[0].mDataByteSize = 128 * sizeof(short int); decBuffer.mBuffers[0].mData = buffer; UInt32 numFrames = 128; AudioStreamPacketDescription outPacketDescription; memset(&outPacketDescription, 0, sizeof(AudioStreamPacketDescription)); outPacketDescription.mDataByteSize = 128; outPacketDescription.mStartOffset = 0; outPacketDescription.mVariableFramesInPacket = 0; OSStatus status = AudioConverterFillComplexBuffer(_audioConverter, inInputDataProc, &userData, &numFrames, &decBuffer, &outPacketDescription); NSError *error = nil; if (status == kNoMoreDataError) { NSLog(@"%u bytes decoded", (unsigned int)decBuffer.mBuffers[0].mDataByteSize); [_decodedData appendData:[NSData dataWithBytes:decBuffer.mBuffers[0].mData length:decBuffer.mBuffers[0].mDataByteSize]]; _currPosInDecoderBuf += 1; } else { error = [NSError errorWithDomain:NSOSStatusErrorDomain code:status userInfo:nil]; } } else { break; } } } 用于启动活动,而不是广播ACTION_VIEW操作。

  

一个人不能再注册为清单中任何URI的广播接收器

广播接收器很少过滤Intent(即Uri中有<data>个元素。