Android API级别23中的系统API行为

Android API级别23中的系统API行为,android,permissions,settings,Android,Permissions,Settings,在我的应用程序中,targetSdkVersion为23,同时使用API设置.System.putString() 抛出以下错误,应用程序崩溃 “AndroidRuntime:java.lang.IllegalArgumentException:您不能将设置保留在安全设置中。” 在 以及在操作管理写入设置打开的屏幕中授予应用写入权限。应用程序仍然会出现错误“您无法将设置保留在安全设置中” 现在是否仅为OEM开发的应用请求写入设置权限? 有可能的解决办法吗 共享一个示例代码,在Nexus5设备上

在我的应用程序中,targetSdkVersion为23,同时使用API设置.System.putString()

抛出以下错误,应用程序崩溃
“AndroidRuntime:java.lang.IllegalArgumentException:您不能将设置保留在安全设置中。”



以及在操作管理写入设置打开的屏幕中授予应用写入权限。应用程序仍然会出现错误“您无法将设置保留在安全设置中”

现在是否仅为OEM开发的应用请求写入设置权限? 有可能的解决办法吗

共享一个示例代码,在Nexus5设备上使用M OS进行测试

Android清单代码段: 代码段: 日志堆栈:
您的代码在所有版本的Android上都会失败。如果它在安卓6.0之前工作,那么这显然是一个刚刚修复的bug


设置。系统
用于平台定义的设置。您不能在其中放置任意设置,例如
test.hemant

您可以发布更多代码来显示您是如何使用它的吗?“Android M 6.0 RingtoneManager的早期解决方案-Manifest.permission.WRITE\u settings Error Is not effective”--请解释“not effective”的含义。@commonware:谢谢您的帮助。这意味着在遵循上述链接中提到的步骤并在操作\管理\写入\设置打开的屏幕中授予应用程序写入权限后。该应用程序仍然会出现错误“您无法将您的设置保留在安全设置中”。好的,那么我回到Sharj的评论中:您需要为我们提供帮助。在这种情况下,这将是完整的堆栈跟踪,以及从该堆栈跟踪中引用的代码。@commonware:添加了带有堆栈跟踪的代码。是的,似乎只有在Android 6.0中添加了此检查。标准平台设置上的写入操作正在运行。@Benny,你能解释一下如何解决这个问题吗?我也有同样的问题。权限已授予,但错误消息仍然存在。宏达电Smarthphone@MarcelloC–mara,我的建议是将
.apk
复制到设备的
system/priv-app
目录中,使应用程序成为系统应用程序。您需要访问权限才能执行此操作。这种方法并不适合所有人。
    android:minSdkVersion="17"  
    android:targetSdkVersion="23"  
    uses-permission android:name="android.permission.WRITE_SETTINGS"
protected void onResume() {
    super.onResume();
    boolean canDo =  Settings.System.canWrite(this);
    if (false == canDo)
    {
        Intent grantIntent = new   Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS);
        startActivity(grantIntent);
    }
    else
    {   
        Settings.System.putString(this.getContentResolver(),
            "test.hemant", "hemantval");
    }           

}
E/DatabaseUtils(  779): Writing exception to parcel
E/DatabaseUtils(  779): java.lang.IllegalArgumentException: You cannot keep your settings in the secure settings.
E/DatabaseUtils(  779):     at com.android.providers.settings.SettingsProvider.warnOrThrowForUndesiredSecureSettingsMutationForTargetSdk(SettingsProvider.java:1175)
E/DatabaseUtils(  779):     at com.android.providers.settings.SettingsProvider.enforceRestrictedSystemSettingsMutationForCallingPackage(SettingsProvider.java:1030)
E/DatabaseUtils(  779):     at com.android.providers.settings.SettingsProvider.mutateSystemSetting(SettingsProvider.java:906)
E/DatabaseUtils(  779):     at com.android.providers.settings.SettingsProvider.insertSystemSetting(SettingsProvider.java:874)
E/DatabaseUtils(  779):     at com.android.providers.settings.SettingsProvider.call(SettingsProvider.java:257)
E/DatabaseUtils(  779):     at android.content.ContentProvider$Transport.call(ContentProvider.java:398)
E/DatabaseUtils(  779):     at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:283)
E/DatabaseUtils(  779):     at android.os.Binder.execTransact(Binder.java:453)
D/AndroidRuntime(19935): Shutting down VM