据我所知,没有可用于定义共享逻辑/数据的应用程序级别范围,并且每个活动本质上都是由清单捆绑在一起的独立应用程序...
但是我有一组用户访问权限,我通过网络服务调用获得这些权限,并且不想在每个活动onCreate()
中进行此调用。
我在应用程序中使用SharedPreferences
,但由于权限不是可由用户编辑的,因此Android设备上的平面文件曝光感觉就像处理此问题的不安全方式。
如果应用程序重新启动,我确实需要重新请求此信息,所以我认为最便宜的是将它存储在变量中。
我知道IntentExtras,但我们谈论的是设置“对象”,而不是原始类型。
正确处理这种情况的方法?
答案 0 :(得分:28)
您实际上可以创建一个“应用程序”类,可用于实质上创建应用程序范围的设置。
只需创建一个新类并扩展Application,然后设置任何类成员和适当的getter / setter方法,您就可以在整个应用程序中访问它们。
然后,您需要按如下方式更新清单:
<application android:icon="@drawable/logo"
android:label="@string/app_name"
android:name=".application.CustomApplication">
然后在任何活动中,您可以按如下方式访问它:
CustomApplication app = ((CustomApplication)getApplication());
答案 1 :(得分:1)
我认为使用共享首选项是相当安全的。只有拥有root,自定义roms和黑客知识的高级用户才能抓住机会! (我甚至不确定这是否可行)。
除了SharedPreferences,您还可以实现自定义Application对象并在那里保留您的权限。
无论如何,作为一名开发人员,我认为更有可能在请求中的某个地方被黑客入侵,以获取用户权限(使用https等)并且我的应用程序被反编译。