我想知道共享偏好安全性.
是否可以访问共享首选项,即使它们是在MODE_PRIV(0)中创建的?
是否可以列出所有可用的共享偏好,然后从其他应用程序中获取所有设置?
共享偏好是放置敏感数据的好地方,例如密码或身份验证令牌?
谢谢
在Android中,我们可以在共享首选项中存储类的对象,并在以后检索该对象吗?
如果有可能怎么办?如果不可能做到这一点的其他可能性是什么?
我知道序列化是一种选择,但我正在寻找使用共享偏好的可能性.
随着Gingerbread的发布,我一直在尝试一些新的API,其中一个是StrictMode.
我注意到其中一个警告是为了getSharedPreferences().
这是警告:
StrictMode policy violation; ~duration=1949 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=23 violation=2
Run Code Online (Sandbox Code Playgroud)
并且它是为getSharedPreferences()在UI线程上进行的调用而给出的.
是否SharedPreferences真的应该从UI线程访问和更改?
我正在将一个Android应用程序移植到ios,我使用的一件事是android中的共享首选项,以便每次完成一个级别时保存.
这样,当用户重新进入应用程序时,他们可以看到他们达到3级或其他任何级别.
iOS中是否有类似的机制?或者我是否必须手动写出特定于应用程序的文件?
如果是这样,我如何写出只对我的应用程序可见的文件?
如上所述这里,我继承PreferenceFragment并显示它的活动中.该文档解释了如何在此处监听首选项更改,但前提是您将PreferenceActivity子类化.由于我不这样做,我如何监听偏好变化?
我已经尝试在我的PreferenceFragment中实现OnSharedPreferenceChangeListener但它似乎不起作用(onSharedPreferenceChanged似乎永远不会被调用).
到目前为止这是我的代码:
SettingsActivity.java
public class SettingsActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// Display the fragment as the main content.
getFragmentManager().beginTransaction().replace(android.R.id.content, new SettingsFragment()).commit();
}
}
Run Code Online (Sandbox Code Playgroud)
SettingsFragment.java
public class SettingsFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener
{
public static final String KEY_PREF_EXERCISES = "pref_number_of_exercises";
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.preferences);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)
{
//IT NEVER GETS …Run Code Online (Sandbox Code Playgroud) android android-preferences sharedpreferences android-fragments android-activity
我正在使用共享首选项来存储我的应用程序的某些值.我想看看信息实际存储在手机上的文件.我在Eclipse上找到了很多方法,但是我在Android Studio上进行调试.我的手机扎根了.我读到有root权限对于读取这些类型的文件很重要.如果没有办法,那么我将查找如何通过我的程序访问信息然后将其输出到log cat.但是,希望我可以直接在手机上查看文件,因为它更简单.谢谢.
我已将用户设置存储在我的应用程序的SharedPreferences中.当我通过Google Play商店将应用更新到应用的新版本时,SharedPreferences会发生什么?
更新后SharedPrefernces是否仍然存在或将被删除?
到目前为止,我还没有在网络或Stackoverflow上找到答案(我可能会搜索错误的关键字?).
你能指点一些他们描述这个过程的链接吗?
编辑: 同时我也找到了另一个答案:Update/Uninstall上的SharedPreferences行为
编辑2:
由于我第一次提出这个问题的时间已经过去了,我最近了解到,自从Android 6.0(API 23)以来,也可以使用自动备份功能来保护您的共享首选项,如Google所述.只需allowBackup="true"在AndroidManifest.xml文件中添加即可.
得到错误,这个类型的sharedPreferences编辑器没有定义double方法.Eclipse给了编辑器一个快速修复添加转换,但是当我这样做仍然给出错误时,为什么我不能放双.
代码:
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
if (TextUtils.isEmpty(editBl.getText().toString())) {
numberOfBl = 0;
} else {
numberOfBl = Integer.parseInt(editBl.getText().toString();
}
if (TextUtils.isEmpty(editSt.getText().toString())) {
tonOfSt = 0;
} else {
tonOfSt = Double.parseDouble(editSt.getText().toString());
}
SharedPreferences prefs = getSharedPreferences(
"SavedTotals", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt("savedBl", numberOfBl);
editor.putDouble("savedSt", tonOfSt);
editor.commit();
}
Run Code Online (Sandbox Code Playgroud) 我有一个ArrayList具有名称和图标指针的对象,我想将其保存SharedPreferences.我能怎么做?
注意:我不想使用数据库