sim*_*dam 6 android intentfilter android-intent
请问如何使用broadcastReceiver与Intent过滤器一起使用的正确方法..在我的android_manifest.xml文件中我有这些行:
<activity android:name=".DataDisplayActivity" android:theme="@android:style/Theme.Holo.NoActionBar" android:icon="@drawable/icon_3d" android:label="AdvancedHyperXPositiveSuperFluousApp">
<intent-filter>
<action android:name="com.simekadam.blindassistant.UPDATE_GPS_UI"/>
<action android:name="com.simekadam.blindassistant.UPDATE_CONTEXT_UI"/>
</intent-filter>
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
在活动中,我使用此功能设置接收器
registerReceiver(broadcastReceiver, null);
Run Code Online (Sandbox Code Playgroud)
它在null上失败,obvi它需要设置IntentFilter并且我可以将它作为param添加到函数中,但我问,如何将它与XML定义的intent过滤器一起使用.谢谢你的帮助
预告片:我实际上已经使用内联集合意图,但我问如何使它与XML中的意图集一起工作.
waq*_*lam 16
当您使用registerReceiver接收广播时,您不需要在xml中定义intent-filters .
在您的情况下,您应该创建一个扩展到BroadcastReceiver的类,然后在android的清单文件中定义该类文件.例如:
类文件:
package your.package.name;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class MyCustomReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if(action.equals("com.simekadam.blindassistant.UPDATE_GPS_UI")){
//do something
}
else if(action.equals("com.simekadam.blindassistant.UPDATE_CONTEXT_UI")){
//do something
}
}
}
Run Code Online (Sandbox Code Playgroud)
并在清单中添加:
<receiver android:name=".MyCustomReceiver" android:enabled="true">
<intent-filter>
<action android:name="com.simekadam.blindassistant.UPDATE_GPS_UI" />
<action android:name="com.simekadam.blindassistant.UPDATE_CONTEXT_UI" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
您可以在manifest.xml中注册接收器和intent-filters,如上所述,或者您可以动态执行以下两项操作:
Myreceiver reMyreceive = new Myreceiver();
IntentFilter filter = new IntentFilter("actionname");
registerReceiver(reMyreceive, filter);
Run Code Online (Sandbox Code Playgroud)
myreceiver将成为你的班级扩展广播接收器.您可以在此处查看完整示例.
| 归档时间: |
|
| 查看次数: |
14488 次 |
| 最近记录: |