如何更改设备的配置文件时触发事件?

时间:2013-06-28 09:50:32

标签: java android cyanogenmod

我想在用户更改手机配置文件时触发事件,但我不确定如何操作。理想情况下,我可以捕捉广播意图并知道配置文件何时发生变化,但我无法找到任何相关文档。

如果我是正确的,配置文件系统不是AOSP库存的一部分,而是Cyanogenmod。

我已经找到了我能找到的两个与个人资料相关的课程:

我能找到的唯一广播意图是here

有关如何实现这一点的任何想法?我的应用程序仅针对运行Cyanogenmod 10.1的设备。这是CyanogenMod的概况经理,让您更清楚地了解我在说什么。

enter image description here

4 个答案:

答案 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上找到此问题的问题。