【问题标题】:java.lang.SecurityException: MODE_WORLD_READABLEjava.lang.SecurityException: MODE_WORLD_READABLE
【发布时间】:2017-12-26 03:45:24
【问题描述】:

我没有在我的应用程序中使用这个标志MODE_WORLD_READABLE,但我仍然得到这个异常?这个exception还有其他原因吗,还是我做错了什么?

这是我在 listviewgridview 之间切换的逻辑,我为它们设置了一个 int 标志并在共享首选项中/从共享首选项中保存/检索它们:

private int currentViewMode = 0 ;
static final int VIEW_MODE_LISTVIEW = 0;
static final int VIEW_MODE_GRIDVIEW = 1;
boolean isGridView;

在 onCreate 中:

currentViewMode = sharedPreferences.getInt("currentViewMode",VIEW_MODE_LISTVIEW);

还有我的 swichView 方法:

    private void switchView() {
    SharedPreferences sharedPreferences = 
                        activity.getSharedPreferences("localGridCount",currentViewMode);
    SharedPreferences.Editor editor = sharedPreferences.edit();

    if (VIEW_MODE_LISTVIEW == currentViewMode){
        // ListView
        RecyclerView.LayoutManager mLayoutManager = new 
                       GridLayoutManager(activity, 1, GridLayoutManager.VERTICAL, false);
        gridCount = 1;
        editor.putInt("localGridValue", gridCount);
        recyclerView.setLayoutManager(mLayoutManager);
        recyclerView.setItemAnimator(new DefaultItemAnimator());
        recyclerView.setAdapter(adapter);
    }else{
        // GridView
        RecyclerView.LayoutManager mLayoutManager = new 
                       GridLayoutManager(activity, 2, GridLayoutManager.VERTICAL, false);
        gridCount = 2;
        editor.putInt("localGridValue", gridCount);
        recyclerView.setLayoutManager(mLayoutManager);
        recyclerView.setItemAnimator(new DefaultItemAnimator());
        recyclerView.setAdapter(adapter);
    }
    editor.apply();
}

这是我得到的全部例外(就在牛轧糖中): Long_Exception_Link

【问题讨论】:

  • 尝试使用 getDefaultSharedPreferences(activity) 代替 activity.getSharedPreferences("localGridCount",currentViewMode);
  • @Majid 你在代码中的任何地方都使用了 VIEW_MODE_GRIDVIEW 吗?
  • @Raghavendra 是的,要处理切换我的操作栏上有两个菜单项,VIEW_MODE_GRIDVIEW 的使用在 onOptionsItemSelected
  • 你为什么将currentViewMode 传递给getSharedPreferences()
  • @CommonsWare 我有区别0currentViewMode 吗? ,你是对的,我不应该这样做

标签: android listview sharedpreferences android-gridview


【解决方案1】:

看起来您在代码中使用了 VIEW_MODE_GRIDVIEW,即常量 1,它等同于常量值 MODE_WORLD_READABLE(1),因此您遇到了该异常。 p>

所以,使用不同的常量值

参考:https://developer.android.com/reference/android/content/Context.html#MODE_WORLD_READABLE

【讨论】:

    猜你喜欢
    • 2016-12-31
    • 2012-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-17
    • 1970-01-01
    • 2012-03-13
    • 2013-05-01
    相关资源
    最近更新 更多