早上好,我正试着拦截设置活动的开始。基本上,当用户试图访问全局设置活动时,我希望触发一些事件。
我使用的是一个BroadcastReceiver,代码如下:
public class MainActivity extends Activity {
IntentFilter intentFilter;
BroadcastReceiver receiver;
Button settings;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
intentFilter = new IntentFilter(Settings.ACTION_SETTINGS);
((Button)findViewById(R.id.settings)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Settings.ACTION_SETTINGS);
startActivity(intent);
Log.v("MYAPP", "starting intent");
}
});
}
@Override
protected void onPause() {
super.onPause();
unregisterReceiver(receiver);
Log.v("MYAPP", "on pause, unregister receiver");
}
@Override
protected void onResume() {
super.onResume();
receiver = new MyBroadcastReceiver();
registerReceiver(receiver, intentFilter);
Log.v("MYAPP", "on resume, register receiver");
}
private class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.v("MYAPP", "received settings intent");
}
}}
但接收者没有截获意图..。
我遗漏了什么?
谢谢您抽时间见我
发布于 2015-03-29 12:43:32
我遗漏了什么?
您不能使用startActivity()“拦截”BroadcastReceiver调用。BroadcastReceiver接收广播,而不是startActivity()呼叫。
发布于 2015-03-29 13:33:11
在反馈之后,我找到了另一种拦截设置打开的方法:
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
Log.v(TAG, "Focus changed !");
if (!hasFocus) {
Log.v(TAG, "Lost focus !");
ActivityManager am = (ActivityManager) getApplicationContext()
.getSystemService(Context.ACTIVITY_SERVICE);
ComponentName cn = am.getRunningTasks(1).get(0).topActivity;
if (cn != null
&& cn.getClassName().equals(
"com.android.settings.Settings")) {
Log.v(TAG, "settings intercepted");
// do your stuff
}
}
}https://stackoverflow.com/questions/29329223
复制相似问题