设为首页 加入收藏

TOP

Android 4.0访问第三方的sharedPreferences数据(一)
2014-11-24 08:12:41 来源: 作者: 【 】 浏览:3
Tags:Android 4.0 访问 第三方 sharedPreferences 数据

我花了一天的时间研究,修改第三方的国笔输入法的手写默认显示方式,原先是全屏模式,我要改为非全屏模式。


首先把国笔输入法生成的sharedPreferences文件拷贝出来,查看显示全屏与非全屏的关键字。


但是2.3系统使用


try {
otherAppsContext=createPackageContext("com.guobi.gbime", CONTEXT_IGNORE_SECURITY );
} catch (NameNotFoundException e) {
// TODO Auto-generated catch block
Log.i("guobi", e.getMessage());
}


SharedPreferences sharedPreferences = otherAppsContext.getSharedPreferences("com.guobi.gbime_preferences", Context.MODE_WORLD_READABLE);


String name2 = sharedPreferences.getString("HandwriteFrameType", "");是可以获取到数据,而4.0就不行,打印的是空。


最终发现主要是权限问题。


国笔输入法生成的sharedPreferences文件是rw- rw- ---,,所以我们必须改变它的权限进行操作,其实目录也要改权限,都改为777。我在launcher的oncreate()方法中加入以下代码


//修改国笔输入法的显示模式,把全屏改为非全屏模式

xmlFile = new File("/data/data/com.guobi.gbime/shared_prefs/com.guobi.gbime_preferences.xml");
if(xmlFile.exists())
{
try {
Runtime.getRuntime().exec(new String[]{"su","-c","chmod 777 /data/data/com.guobi.gbime/shared_prefs/com.guobi.gbime_preferences.xml"});
Log.i("guobi", "chmod 777");
Runtime.getRuntime().exec(new String[]{"su","-c","rm /data/data/com.guobi.gbime/shared_prefs/com.guobi.gbime_preferences.xml"});
Log.i("guobi", " rm");
Runtime.getRuntime().exec(new String[]{"su","-c","touch /data/data/com.guobi.gbime/shared_prefs/com.guobi.gbime_preferences.xml"});
Log.i("guobi", " touch");
Runtime.getRuntime().exec(new String[]{"su","-c","chmod 777 /data/data/com.guobi.gbime/shared_prefs/com.guobi.gbime_preferences.xml"});
Log.i("guobi", " chomd");

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
else
{
if(!xmlFile.getParentFile().exists())
{
try {
Runtime.getRuntime().exec(new String[]{"su","-c","mkdir /data/data/com.guobi.gbime/shared_prefs"});
Log.i("guobi", "mkdir");
Runtime.getRuntime().exec(new String[]{"su","-c","chmod 777 /data/data/com.guobi.gbime/shared_prefs"});
Log.i("guobi", " chomd");



} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}



}

try {
Runtime.getRuntime().exec(new String[]{"su","-c","touch /data/data/com.guobi.gbime/shared_prefs/com.guobi.gbime_preferences.xml"});
Log.i("guobi", "touch");
Log.i("guobi", "chmod 777");
Runtime.getRuntime().exec(new String[]{"su","-c","chmod 777 /data/data/com.guobi.gbime/shared_prefs/com.guobi.gbime_preferences.xml"});
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}



}



try {
otherAppsContext=mContext.createPackageContext("com.guobi.gbime",mContext. CONTEXT_IGNORE_SECURITY );
} catch (NameNotFoundException e) {
// TODO Auto-generated catch block
Log.i("guobi", e.getMessage());
}

SharedPreferences sharedPreferences = otherAppsContext.getSharedPreferences("com.guobi.gbime_preferences", Context.MODE_WORLD_READABLE);
{
SharedPreferences.Editor guobieditor=sharedPreferences.edit();
guobieditor.putString("HandwriteLang", "china");
guobieditor.putString("Hand

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android 中强制关掉指定的应用 下一篇Android 4.0中修改默认输入法

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C语言中,“指针”用 (2025-12-26 15:20:18)
·在c语言的指针运算中 (2025-12-26 15:20:15)
·C语言-函数指针与函 (2025-12-26 15:20:12)
·求navicat for mysql (2025-12-26 13:21:33)
·有哪位大哥推荐一下m (2025-12-26 13:21:30)