以编程方式打开Android设置

158

如何通过程序打开设置?

12个回答

229

您可以使用以下方法打开

startActivityForResult(new Intent(android.provider.Settings.ACTION_SETTINGS), 0);
你可以通过在设备上按返回按钮来返回。

1
@SweetWisherヅ 你只需要编辑源代码即可。 - Behnam
2
现在你可以使用以下代码: Intent intent = new Intent(android.provider.Settings.ACTION_SECURITY_SETTINGS); startActivity(intent);每个主要的设置类别都有一整套常量可供选择。只需编写 Settings., Android Studio 将自动显示所有类别的自动完成列表。 - Asim Gasimzade
2
我能否在设置应用程序中搜索特定设置,并从我的应用程序中以编程方式打开该特定设置?例如,我能否在手机的设置中从我的应用程序中搜索OTG? - Divya Gupta
我认为使用StartActivity就足够了,每当返回到应用程序时我总是得到结果为CANCELD(这是通过返回按钮返回时正常的)。因此,以这种方式应用程序将不会被通知更改的设置。 - this.myself
由于此代码在同一窗口中打开设置,可能会破坏您的应用程序功能。使用此答案中的代码来防止这种情况发生。 - finnmglas
显示剩余3条评论

61

我使用了来自最受欢迎答案的代码:

startActivityForResult(new Intent(android.provider.Settings.ACTION_SETTINGS), 0);

它在同一窗口中打开设备设置,因此导致我的安卓应用程序(finnmglas/Launcher)的用户被卡住了。

2020年及以后的答案(使用Kotlin):

startActivity(Intent(Settings.ACTION_SETTINGS))

它在我的应用程序中有效,应该在你的应用程序中也能正常工作,而不会产生任何不必要的后果。


3
谢谢朋友,请按照以下方式更新您的代码: startActivity(new Intent(Settings.ACTION_SETTINGS)); - Muhammad Ali
4
7年后,方案出现了。 - Gary Chen
7
这里导入“设置”是import android.provider.Settings。 - Kishan Solanki
1
我非常喜欢2020年的解决方案,因为它使您能够轻松地打开特定类别的设置,例如只需使用“Settings.ACTION_ACCESSIBILITY_SETTINGS”即可打开辅助功能设置。 - Mohamed Medhat

44

这对我起了作用。

Intent callGPSSettingIntent = new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivityForResult(callGPSSettingIntent);

当他们按返回键时,它会回到我的应用程序。


1
这个程序提供了哪些设置界面? - IgorGanapolsky
2
@IgorGanapolsky 它打开“设置”内的基于位置的设置。 - androminor

22

2
你需要将"REQUEST_CODE"作为startActivityForResult的第二个参数传递。 - Chintan Rathod
此外,他要求的是一般设置,而不是Wifi设置。那你为什么回答那个呢? - james04

14

如果有人找到这个问题并想要打开您特定应用程序的设置:

    val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
    intent.data = Uri.parse("package:" + context.packageName)
    startActivity(intent)

9

请查看程序化显示设置页面


    startActivity(context, new Intent(Settings.ACTION_SETTINGS), /*options:*/ null);

通常情况下,您可以使用预定义常量Settings.ACTION__SETTINGS。完整列表可以在这里找到。

1
有没有一种方法可以打开新选项中的设置:“控制哪些应用程序可以读取您的通知”(在API 18中添加)? - Javi

7
为了实现这一点,只需使用一个Intent,使用常量ACTION_SETTINGS,该常量专门用于显示系统设置:
startActivity(new Intent(Settings.ACTION_SETTINGS));

startActivityForResult()是可选的,只有当您希望在设置活动关闭时返回一些数据时才需要使用它。

startActivityForResult(new Intent(Settings.ACTION_SETTINGS), 0);

这里,您可以找到一个包含特定设置或应用程序详细信息的内容列表。


6
你可以为此类活动创建另一个类。
public class Go {

   public void Setting(Context context)
    {
        Intent intent = new Intent(android.provider.Settings.ACTION_SETTINGS);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intent);
    }
}

3
使用此意图在安卓设备的设置应用程序中打开安全和位置屏幕。
    startActivity(new Intent(Settings.ACTION_SECURITY_SETTINGS));

3

根据 https://developer.android.com/training/permissions/requesting 所述的新 API:

private val goToSettingsRequest = registerForActivityResult(
    ActivityResultContracts.StartActivityForResult()
) { activityResult ->
    // TODO: DEAL WITH THE CALLBACK
}

private fun goToSettings() {
    goToSettingsRequest.launch(Intent(Settings.ACTION_SETTINGS))
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接