我想在用户更改手机配置文件时触发事件,但我不确定如何操作。理想情况下,我可以捕捉广播意图并知道配置文件何时发生变化,但我无法找到任何相关文档。
如果我是正确的,配置文件系统不是AOSP库存的一部分,而是Cyanogenmod。
我已经找到了我能找到的两个与个人资料相关的课程:
我能找到的唯一广播意图是here。
有关如何实现这一点的任何想法?我的应用程序仅针对运行Cyanogenmod 10.1的设备。这是CyanogenMod的概况经理,让您更清楚地了解我在说什么。
答案 0 :(得分:2)
不确定我对你想要的是否正确,但在我的情况下它运作良好。试试它是否可以帮助你。
我在这里使用了 2个按钮将个人资料设置为无声和默认模式。当按钮点击时会激活这些事件时触发您的事件。
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final TextView text = (TextView) findViewById(R.id.text1);
Button silent = (Button) findViewById(R.id.silent);
Button default = (Button) findViewById(R.id.default);
final AudioManager mode = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE);
silent.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
text.setText("The Mobile in Silent Mode"); //i use example case,trigger your event here
mode.setRingerMode(AudioManager.RINGER_MODE_SILENT);
Toast.makeText(getBaseContext(), "Silent Mode Activated",Toast.LENGTH_LONG).show()
}
});
default.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
text.setText("The Mobile in Default Mode"); //trigger your event here
mode.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
Toast.makeText(getBaseContext(), "Default Mode Activated", Toast.LENGTH_LONG).show();
}
});
}
显然这也可以帮助你..
答案 1 :(得分:1)
由于这些是两个独立的环境,我认为现在不可能检测到何时从一个环境切换到另一个环境。
答案 2 :(得分:1)
如何更改设备的配置文件时触发事件?
Android对此没有任何支持,换句话说在更改配置文件时无法触发某些事件。
您只能在设备Ringer模式发生变化时触发事件,但不能触发配置文件。
即使我找不到设备的配置文件名称和当前设置的配置文件名称,这可能是您搜索所需信息的方式。
答案 3 :(得分:0)
根据我与Cyanogenmod开发人员的讨论,可以通过为ProfileManagerService.java
中的BroadcastReceiver
添加Intent
来处理
问题在于ProfileManager.java
课程中缺少此意图,而是存在于其他地方。
可以在Cyanogenmod's issue tracker上找到此问题的问题。