打开移动网络设置菜单时出错

时间:2010-12-10 10:22:23

标签: android android-intent

您好我想用以下代码打开移动网络设置:


Intent intentSettings = new Intent();

intentSettings.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intentSettings.setAction(Settings.ACTION_DATA_ROAMING_SETTINGS);
             cont.startActivity(intentSettings);

但它给了我这个错误。任何人的想法?

12-10 11:17:34.902: ERROR/AndroidRuntime(623): android.content.ActivityNotFoundException: No Activity found to handle Intent { action=android.settings.DATA_ROAMING_SETTINGS flags=0x4000000 }

由于

3 个答案:

答案 0 :(得分:16)

要使其正常工作,请将您的意图创建更改为以下代码:

Intent intent=new Intent(Settings.ACTION_DATA_ROAMING_SETTINGS);
ComponentName cName = new ComponentName("com.android.phone","com.android.phone.Settings");
intent.setComponent(cName); 

基本上,android清单需要一个组件过滤器。

答案 1 :(得分:4)

您可以尝试删除FLAG_ACTIVITY_NEW_TASK,在这种情况下可能不需要,并查看是否有帮助。

如果这没有帮助,那么:

  • 您在Android 1.1或更早版本(似乎不太可能)
  • 上运行此功能
  • 您是在兼容性问题的设备上运行此功能(如果是,请告诉我它是什么设备)
  • 真的很奇怪

<强>更新

看来答案是上面的第三个子弹。虽然ACTION_DATA_ROAMING_SETTINGS位于文档中,但“设置”应用程序本身没有<intent-filter>

我将在Android 2.3源代码发布时进行检查,看看是否会改变故事。如果没有,我将提交一个错误,因为它是文档错误或设置应用程序错误,恕我直言。

答案 2 :(得分:1)

对于ACTION_NETWORK_OPERATOR_SETTINGS,它的工作方式相同,只需添加以下组件:

Intent intent=new Intent(Settings.ACTION_NETWORK_OPERATOR_SETTINGS);

ComponentName cName = new ComponentName("com.android.phone","com.android.phone.Settings");

intent.setComponent(cName);