无法从片段的AsyncTask调用BroadcastReceiver

时间:2014-09-12 08:32:17

标签: android android-asynctask android-broadcast

因此,在片段课程中,我有一个AsyncTask课程,我在BroadcastReceiver的{​​{1}}方法调用onPostExecute() -

Android Manifest -

AsyncTask

片段类 -

        <receiver 
            android:name="com.iddl.main.IncomingBBStream"
            android:label="IncomingBBStream">   
             <action android:name="com.iddl.main.BBbroadcast" />
            <intent-filter>
                <action android:name="android.bluetooth.
                 device.action.ACL_DISCONNECTED" />
            </intent-filter>
        </receiver>

BroadcastReceiver类 -

@Override
protected void onPostExecute(Void result) 
{   
  Intent intent = new Intent();
  intent.setAction("com.iddl.main.BBbroadcast");
  intent.putExtra("uuid", uuid);
  getActivity().sendBroadcast(intent);
}   

它至少应该打印日志消息,但它不会这样做。

注意:

我必须添加public class IncomingBBStream extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { Log.i(TAG, "onReceive BroadcastReceiver------"); } 才能使其正常运行,但这没有任何意义,因为我已经通过了与清单的接收者名称{{1}匹配的操作intent.setClass(getActivity(), IncomingBBStream.class); }}。所以它知道要调用哪个类。

1 个答案:

答案 0 :(得分:0)

你可能想这样做:

<receiver
  android:name="com.iddl.main.IncomingBBStream"
  android:label="IncomingBBStream">

  <intent-filter>
     <action android:name="com.iddl.main.BBbroadcast"/>
     <category android:name="android.intent.category.DEFAULT"/>
  </intent-filter>

  <intent-filter>
     <action android:name="android.bluetooth.
             device.action.ACL_DISCONNECTED"/>
     <category android:name="android.intent.category.DEFAULT"/>
  </intent-filter>
</receiver>

每个intent过滤器在其自己的标记上分开,并始终包含默认类别。