标签: sharedpreferences

如何检查SharedPreferences是否存在

我正在以这种方式检查文件是否存在,但我需要超越,我需要知道具体是否有一个,有什么办法吗?

File f = new File("/data/data/com.eventrid.scanner/shared_prefs/Eventrid.xml");
          if (f.exists()){

          }
          else{

          }  
Run Code Online (Sandbox Code Playgroud)

android sharedpreferences

42
推荐指数
2
解决办法
5万
查看次数

Android - 如何在代码中设置首选项

我有一个Android应用程序,我在xml文件中有我的首选项,工作正常.我现在想要使用代码设置其中一个首选项而不是显示整个首选项屏幕,我将如何进行此操作?

android android-preferences sharedpreferences

41
推荐指数
2
解决办法
5万
查看次数

Android - 如何在非Activity类中使用SharedPreferences?

如何在非Activity类中使用SharedPreferences?我尝试制作一个通用的Preferences实用程序类并导入android.content.Context但Eclipse仍然不允许我使用getSharedPreferences().

android sharedpreferences

39
推荐指数
2
解决办法
5万
查看次数

Android - 存储/检索具有共享首选项的字符串

正如标题所说,我想保存并检索某些字符串.但我的代码不会在检索或存储中通过第一行.我尝试按照以下链接:http://developer.android.com/guide/topics/data/data-storage.html

private void savepath(String pathtilsave, int i) {
    String tal = null;
    // doesn't go past the line below
    SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();
    tal = String.valueOf(i);
    editor.putString(tal, pathtilsave);
    editor.commit();
}
Run Code Online (Sandbox Code Playgroud)

和我的检索方法:

public void getpaths() {
    String tal = null;
    // doesn't go past the line below
    SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
    for (int i = 1; i <= lydliste.length - 1; i++) {
        tal = String.valueOf(i);
        String restoredText = settings.getString(tal, null);
        if (restoredText != null) {
            lydliste[i] …
Run Code Online (Sandbox Code Playgroud)

android sharedpreferences

39
推荐指数
3
解决办法
7万
查看次数

在用户卸载应用程序上未删除SharedPreferences

有没有人在Nexus 6P设备上遇到过这个问题?我只是在Nexus 6P(运行Google Fi)上遇到此问题.

当我安装的应用程序有一个关键的userIsLoggedIn内部SharedPreferences.

这个块:

boolean userIsLoggedIn  = SharedPrefs.userIsLoggedIn(this);

// Then in another class...

 public static boolean userIsLoggedIn(Context context) {
    // For users updating apps, if the previous key-value is a string, convert it to boolean
    try {
        return context.getSharedPreferences(LOGIN_FILE, Context.MODE_PRIVATE)
                .getBoolean(USER_LOGGED_IN, false);
    } catch (ClassCastException e) {
        Logger.e(TAG, e.getMessage());
        context.getSharedPreferences(LOGIN, Context.MODE_PRIVATE)
                .edit()
                .putBoolean(USER_LOGGED_IN, false)
                .commit();
        return context.getSharedPreferences(LOGIN, Context.MODE_PRIVATE)
                .getBoolean(USER_LOGGED_IN, false);
    }
}
Run Code Online (Sandbox Code Playgroud)

现在这应该返回false一个新的卸载,但在全新安装上调试它我在App Startup上得到以下内容.

在此输入图像描述

我也运行Proguard,如果这很重要,当在非proguard启用的APK上运行设备时它运行正常.在任何其他设备上运行proguard运行正常.

android sharedpreferences nexus-6p

39
推荐指数
3
解决办法
1万
查看次数

在Android应用程序中存储用户名和密码的最佳选择

我正在开发一个应用程序,用户需要登录才能执行操作...但主要是在Android手机上使用"让我登录"......在这种情况下我将不得不维护用户名和密码的值我的应用程序......应该使用首选项,还是SQLite Db,还是有别的东西,我怎样才能使它安全?Plz帮助...在此先感谢..

android android-preferences sharedpreferences android-sqlite

37
推荐指数
4
解决办法
4万
查看次数

如何在没有Dagger的MVP中使用共享首选项并且不会导致Presenter依赖于上下文?

我正在尝试在没有Dagger的情况下实现MVP(用于学习目的).但我遇到了问题 - 我使用Repository模式从缓存(共享首选项)或网络获取原始数据:

Shared Prefs| 
            |<->Repository<->Model<->Presenter<->View
     Network|
Run Code Online (Sandbox Code Playgroud)

但要把手放在共享首选项上,我必须把它放在某个地方

presenter = new Presenter(getApplicationContext());
Run Code Online (Sandbox Code Playgroud)

我使用onRetainCustomNonConfigurationInstance/ getLastCustomNonConfigurationInstancepair来保持Presenter"保留".

public class MyActivity extends AppCompatActivity implements MvpView {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        //...
        presenter = (MvpPresenter) getLastCustomNonConfigurationInstance();

        if(null == presenter){
            presenter = new Presenter(getApplicationContext());
        }

        presenter.attachView(this);
    }

    @Override
    public Object onRetainCustomNonConfigurationInstance() {
        return presenter;
    }

    //...
}
Run Code Online (Sandbox Code Playgroud)

那么如何在没有Dagger的MVP中使用共享首选项并且不会导致Presenter依赖于上下文?

mvp dependencies android dependency-injection sharedpreferences

36
推荐指数
1
解决办法
1万
查看次数

Android上的SQLite和SharedPreferences文件有多安全?

首先,我的背景.我已经在大型网络系统上工作了十多年,Android是我过去两个月一直关注的事情; 你可以想象,差距很大:)

查看Android的安全性和权限以及数据存储部分文档,直接与开发人员交谈,阅读书籍和教程,很清楚整个模型的工作原理.但是,我无法找到SQLite和SharedPreferences文件是否足够安全以存储精细的非加密信息(例如,OAuth令牌)的答案.有人可以以任何方式抓住它们吗?引用Android的文档:

应用程序存储的任何数据都将分配该应用程序的用户ID,而其他软件包通常无法访问.

这是通常不可访问的部分给我额外的白发:)

谢谢,有用的答案是赞赏:)

sqlite security android sharedpreferences

35
推荐指数
1
解决办法
1万
查看次数

Android - 如何从其他活动获得共享偏好?

在我的应用程序中有一个按钮(activity1).当用户点击它时我想在游戏中没有声音.我想我应该通过在按钮的onClick方法中使用activity1中的sharedpreferences来做到这一点:

SharedPreferences.Editor editor = mPrefs.edit();
editor.putString("sound","1");
editor.commit();
Run Code Online (Sandbox Code Playgroud)

声音和游戏从另一个活动(activity2)开始.我需要在那里阅读set sharedpreferences,但我不知道该怎么做.

谢谢

编辑

我已经离开了这条线:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(Activity1.this);
Run Code Online (Sandbox Code Playgroud)

根据您在Activity2.class中的帮助,我读了这样的首选项:

SharedPreferences myPrefs = getSharedPreferences("Activity1", MODE_PRIVATE);  //Activity1.class
String ifsound = myPrefs.getString("sound","");

 if (ifsound.equals("1"))
 {
     Toast.makeText(Activity1.this, "1", Toast.LENGTH_LONG).show();
 }
 else
 {
      Toast.makeText(Activity1.this, "0", Toast.LENGTH_LONG).show();
 }
Run Code Online (Sandbox Code Playgroud)
  1. 在Activity1.class中,我单击按钮将"声音"设置为"1".
  2. 我点击另一个打开Activity2.class的btn,我总是在Toast msg中得到"0".

android sharedpreferences

35
推荐指数
3
解决办法
7万
查看次数

Android:在共享首选项中存储身份验证令牌是一个好主意吗?

我有一个与服务器通信的应用程序.当用户登录到应用程序时,在服务器上创建身份验证令牌并将其存储在SharedPreferences应用程序中,并且每当应用程序从Web服务请求数据时,验证身份验证令牌.

我的问题是,将身份验证令牌存储在SharedPreferences?中是否安全?我问,因为具有root权限的用户可以访问首选项,提取令牌并使用它.

无论如何,在这方面有更多的安全吗?

authentication android web-services token sharedpreferences

34
推荐指数
1
解决办法
2万
查看次数