编辑共享偏好中的数据

时间:2014-12-04 04:41:37

标签: android sharedpreferences mac-address

我有3个问题要问:

首先,我正在编写一个Android应用程序。但是有一个奇怪的问题发生在我身上。 在应用程序开始时,我检查变量NUMBER_PROVIDED是否为“NO”(默认值),我将通过

打开另一个活动
intent = new Intent(this, InputMobileScreen.class);
startActivityForResult(intent, REQUEST_MOBILE);

之后,我需要提供我的电话号码才能处理。然后我将变量名NUMBER_PROVIDED从“NO”(默认值)更新为“YES”。我将此值存储到静态变量中,并将其写入SharedPreferences。

这里是我更新全局静态变量的代码:

MainActivity.NUMBER_PROVIDED = "YES";

以及SharedPreferences中的更新值:

Context context = getApplicationContext();
 SharedPreferences sharedPref = context.getSharedPreferences(getString(R.string.preference_file_key), Context.MODE_PRIVATE);
 SharedPreferences.Editor editor = sharedPref.edit();                
 editor.putString(getString(R.string.NUMBER_PROVIDED), "YES");                
 editor.commit();setResult(Activity.RESULT_OK);
            finish();

在SharedPreferences中编辑之后,我调用editor.commit(),setResult()并完成输入活动以返回mainactivity。 该应用程序在我的设备上顺利运行(华硕zenphone 5,android 4.4),但在HTC mini上,看起来提交没有成功?我不知道为什么?以及如何在SharedPreferences中的commit()完成后完成activity.finish

其次,在我的应用程序中,我必须调用一个函数来获取WiFi的MAC地址如下:

    WifiManager manager = (WifiManager)getSystemService(Context.WIFI_SERVICE);
    WifiInfo info = manager.getConnectionInfo();
    String macAddress = info.getMacAddress();
    if (macAddress == null)
    {
        macAddress = "00:00:00:00:00:00";
    }
    return macAddress;

在我的设备上,我每次都获得了我的MAC地址,但在其他一些设备中(我的应用程序中有日志),有时它无法获取MAC地址(返回“00:00:00:00:00: 00" )。怎么解决?

第三,当我在输入移动活动时(名称为InputAcitity)。我按下主页按钮到手机的主屏幕,然后我重新点击我的应用程序的图标启动器,以便返回到应用程序。但屏幕显示我在MainActivity中(不再在InputActivity中)。它只发生在一些特定的设备上,而不是全部,我不知道虽然我从MainActivity调用startActivityForResult来打开InputActivity

任何建议表示赞赏。 感谢

1 个答案:

答案 0 :(得分:0)

  1. 对于某些设备中的editor.commit()问题;有三种方法可以尝试解决

    i)尝试使用editor.apply()

    ii)使用finish()Runnable()内的handler()帖子中拨打postdelayed()几毫秒

    iii)尝试使用AsyncTaskdoInbackground()内执行提交操作,并在onPostExecute

  2. 中使用actvity的完成操作