Languages

Menu
Sites
Language
system_settings_set 함수 관련

안녕하세요.

제가 2.4 SDK 로

아래 함수들을 적용해서 테스트 했더니 ,

system_settings_set_value_bool( system_settings_key_e key, bool value);

system_settings_set_value_int( system_settings_key_e  key, int value);

 

SYSTEM_SETTINGS_ERROR_IO_ERROR 가 발생합니다.

Target 이나 emulator 모두 테스트 해봤으나 ,

두개 모두 동일하게 SYSTEM_SETTINGS_ERROR_IO_ERROR 가 발생하고 있습니다.

해당 에러는 어떤 경우에 발생하는건가요? 위의 함수들을 이용하기전 사전 작업이 필요한것이 있나요?

제가 사용한 시료는 Z3 이고 IDE 버전은

Tizen SDK

Version : 2.4.0b
Build id : 20150721-1437

입니다.

 

제 코드는 아래와 같습니다.

잘못된 부분이 있다면 조언 부탁드립니다.

감사합니다.

 

static char *_gl_text_get_cb(void *data, Evas_Object *obj, const char *part)
{

   item_data_s *id = (item_data_s *)data;
   char buf[MAX_STR] = {0,};
   int ret = -1;
 
 dlog_print(DLOG_ERROR,LOG_TAG,"%d- System_settings: %s : %d : %d ", id->index, _info_key[_ret_type[id->index].key], _ret_type[id->index].key, SYSTEM_SETTINGS_KEY_LOCKSCREEN_APP);


 if (_ret_type[id->index].returns==_RET_BOOL)
 {
  system_settings_get_value_bool(_ret_type[id->index].key, &_bool_ret);
  dlog_print(DLOG_ERROR, LOG_TAG, "%d", _bool_ret);
  snprintf(buf, MAX_STR, "%s", _bool_ret ? "True" : "False");
 }
 else if (_ret_type[id->index].returns==_RET_INT)
 {
  system_settings_get_value_int (_ret_type[id->index].key, &_int_ret);
  dlog_print(DLOG_ERROR, LOG_TAG, "%d", _int_ret);
  snprintf(buf, MAX_STR, "%d", _int_ret);
 }
 else if (_ret_type[id->index].returns==_RET_STRING)
 {
  system_settings_get_value_string(_ret_type[id->index].key, &_string_ret);
  dlog_print(DLOG_ERROR, LOG_TAG, "%s", _string_ret);
  
  snprintf(buf, MAX_STR, "%s", _string_ret);
  free(_string_ret);   
 }
 else{
  dlog_print(DLOG_ERROR, LOG_TAG, "Undefined return type");
  return NULL;
 }

 if (!strcmp(part, "elm.text")){
  return strdup(_info_key[_ret_type[id->index].key]);
 }
 else if (!strcmp(part, "elm.text.sub")){
  
  return strdup(buf);
 }

 

   return NULL;
}

 

.......................................

 dlog_print(DLOG_ERROR, LOG_TAG, "gc_gl_selected_cb index : %d %d %d" , id->index, _ret_type[id->index].returns, _ret_type[id->index].key);

 if (_ret_type[id->index].returns==_RET_BOOL || _ret_type[id->index].returns==_RET_INT){
  view_data->key = _ret_type[id->index].key;
  view_data->ret_type = _ret_type[id->index].returns;
  view_data->popup = _create_warning_popup(view_data, CHANGE_DATA_POPUP_TEXT);
 }

.......................................

 if(view_data->ret_type == _RET_BOOL){
  results = system_settings_set_value_bool(view_data->key, !_bool_ret);

  dlog_print(DLOG_ERROR, LOG_TAG, "~~~~~~~~~~~~~ %d %d %d ", view_data->key, !_bool_ret, results);
  dlog_print(DLOG_ERROR, LOG_TAG, "--------- %d %d %d ", SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, SYSTEM_SETTINGS_ERROR_OUT_OF_MEMORY, SYSTEM_SETTINGS_ERROR_IO_ERROR );
  dlog_print(DLOG_ERROR, LOG_TAG, "--------- %d %d %d ", SYSTEM_SETTINGS_ERROR_PERMISSION_DENIED, SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED, SYSTEM_SETTINGS_ERROR_LOCKSCREEN_APP_PASSWORD_MODE );

  results = system_settings_get_value_bool(view_data->key, &_bool_ret);

  dlog_print(DLOG_ERROR, LOG_TAG, "************ %d %d %d ", view_data->key, _bool_ret, results);
    
 }else if(view_data->ret_type == _RET_INT){
  results = system_settings_set_value_int(view_data->key, _int_ret+1);

  dlog_print(DLOG_ERROR, LOG_TAG, "~~~~~~~~~~~~~ %d %d %d ", view_data->key, _int_ret+1, results);
  dlog_print(DLOG_ERROR, LOG_TAG, "--------- %d %d %d ", SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, SYSTEM_SETTINGS_ERROR_IO_ERROR , SYSTEM_SETTINGS_ERROR_PERMISSION_DENIED);

  results = system_settings_get_value_int(view_data->key, &_int_ret);

  dlog_print(DLOG_ERROR, LOG_TAG, "************ %d %d %d ", view_data->key, _int_ret, results); 
 }

Edited by: Kim on 26 Oct, 2015

Responses

1 Replies
daniel kim

안녕하세요..

API reference를 보니 아래 privilege가 필요하고 platform level certificate가 있어야 지원이 되는 것으로 나와있습니다.  혹시 해당 privilege와 platform level certificate가 등록된 상태에서 발생하는지요?

      http://tizen.org/privilege/systemsettings.admin