【发布时间】:2013-10-31 07:07:15
【问题描述】:
如何以编程方式打开设置?
【问题讨论】:
标签: android kotlin android-settings
如何以编程方式打开设置?
【问题讨论】:
标签: android kotlin android-settings
遵循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))
}
【讨论】:
我使用了most upvoted answer中的代码:
startActivityForResult(new Intent(android.provider.Settings.ACTION_SETTINGS), 0);
它在同一窗口中打开设备设置,因此我的 android 应用程序 (finnmglas/Launcher) 的 android 用户卡在了那里。
2020 年及以后的答案(在 Kotlin 中):
startActivity(Intent(Settings.ACTION_SETTINGS))
它适用于我的应用程序,也应该适用于您的应用程序,而不会产生任何不良后果。
【讨论】:
使用警报对话框以编程方式打开 android 位置设置
AlertDialog.Builder alertDialog = new AlertDialog.Builder(YourActivity.this);
alertDialog.setTitle("Enable Location");
alertDialog.setMessage("GPS is not enabled. Do you want to go to settings menu?");
alertDialog.setPositiveButton("Settings", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(intent);
}
});
alertDialog.show();
【讨论】:
如果有人发现此问题并且您想为您的特定应用程序打开设置:
val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
intent.data = Uri.parse("package:" + context.packageName)
startActivity(intent)
【讨论】:
这是为我做的
Intent callGPSSettingIntent = new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivityForResult(callGPSSettingIntent);
当他们按下返回时,它会返回到我的应用程序。
【讨论】:
使用定位的包将用户发送到设置,例如 WRITE_SETTINGS 权限:
startActivityForResult(new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS).setData(Uri.parse("package:"+getPackageName()) ),0);
【讨论】:
查看Programmatically Displaying the Settings Page
startActivity(context, new Intent(Settings.ACTION_SETTINGS), /*options:*/ null);
通常,您使用预定义的常量Settings.ACTION__SETTINGS。完整列表可以在here找到。
【讨论】:
使用此意图在 android 设备的设置应用中打开安全和位置屏幕
startActivity(new Intent(Settings.ACTION_SECURITY_SETTINGS));
【讨论】:
您可以尝试调用:
startActivityForResult(new Intent(android.provider.Settings.ACTION_WIFI_SETTINGS));
设置画面中的其他画面,可前往
https://developer.android.com/reference/android/provider/Settings.html
希望在这种情况下对您有所帮助。
【讨论】:
startActivityForResult 的第二个参数传递。
你可以另开一个班级来做这种活动。
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);
}
}
【讨论】:
要实现这一点,只需使用 Intent 并使用常量 ACTION_SETTINGS,专门定义为显示系统设置:
startActivity(new Intent(Settings.ACTION_SETTINGS));
startActivityForResult() 是可选的,仅当您想在设置活动关闭时返回一些数据时。
startActivityForResult(new Intent(Settings.ACTION_SETTINGS), 0);
here您可以找到内容列表以显示应用程序的特定设置或详细信息。
【讨论】:
你可以打开
startActivityForResult(new Intent(android.provider.Settings.ACTION_SETTINGS), 0);
您可以通过按设备上的返回按钮返回。
【讨论】: