说明:

一个app访问另外一个app的SharedPreferences,程序启动之后没有显示界面就卡死了,无任何提示信息。

错误原因:

应用调用createPackageContext失败,但是也不给出异常信息;

/*
* SharedPreferences sp = getSharedPreferences("ethernet",
* //Context.MODE_WORLD_WRITEABLE);
* Context.MODE_WORLD_READABLE | Context.MODE_WORLD_WRITEABLE);
*/ Context ethernetAppContext = null;
try {
ethernetAppContext = createPackageContext("com.dog.ethernet", Context.CONTEXT_IGNORE_SECURITY);
} catch (NameNotFoundException e) {
new AlertDialog.Builder(this).setTitle("ERROR").setMessage("Please install ethernet application.").setPositiveButton("confirm", null ).show();
System.exit(-1);
e.printStackTrace();
} SharedPreferences sharedPreferences = ethernetAppContext.getSharedPreferences("ethernet", Context.MODE_WORLD_READABLE | Context.MODE_WORLD_WRITEABLE);
Log.e("info", "-------------------------------------------------");
Log.e("info", sharedPreferences.getString("conn_mode", ""));
Log.e("info", sharedPreferences.getString("mIpaddr", ""));
Log.e("info", sharedPreferences.getString("mDns", ""));
Log.e("info", sharedPreferences.getString("mProxyIp", ""));
Log.e("info", sharedPreferences.getString("mProxyPort", ""));
Log.e("info", sharedPreferences.getString("mProxyExclusionList", ""));
Log.e("info", "-------------------------------------------------");
  • 最后通过查看/data/data/路径下的包名,检查到com.dog.ethernet包名不存在,于是修改为正确的包名就正常了。
  • 将当前包下生成ethernet SharedPreferences的代码注释了才能获取到正确的数据,如果不注释掉,好像获取的数据是当前包下的ethernet SharedPreferences,花了挺长时间才确定这个问题。

获取结果

E/info    ( 5353): -------------------------------------------------
E/info ( 5353): manual
E/info ( 5353): 10.10.10.10
E/info ( 5353): 8.8.8.8
E/info ( 5353): -------------------------------------------------

Android.mk

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS) LOCAL_MODULE_TAGS := optional LOCAL_SRC_FILES := $(call all-java-files-under, com) LOCAL_PACKAGE_NAME := ethernetCF
LOCAL_CERTIFICATE := platform include $(BUILD_PACKAGE) # Use the folloing include to make our test apk.
include $(call all-makefiles-under,$(LOCAL_PATH))

Android获取SharedPreferences失败,且App无法启动的更多相关文章

  1. Android Launcher分析和修改9——Launcher启动APP流程

    本来想分析AppsCustomizePagedView类,不过今天突然接到一个临时任务.客户反馈说机器界面的图标很难点击启动程序,经常点击了没有反应,Boss说要优先解决这问题.没办法,只能看看是怎么 ...

  2. Android 开发 获取设备信息与App信息

    设备信息 设备ID(DeviceId) 获取办法 android.telephony.TelephonyManager tm = (android.telephony.TelephonyManager ...

  3. Android性能优化系列之App启动优化

    Android性能优化系列之布局优化 Android性能优化系列之内存优化 Android性能优化系列之apk瘦身 应用的启动速度缓慢是我们在开发过程中常常会遇到的问题,比方启动缓慢导致的黑屏.白屏问 ...

  4. Android性能优化之App应用启动分析与优化

    前言: 昨晚新版本终于发布了,但是还是记得有测试反馈app启动好长时间也没进入app主页,所以今天准备加个班总结一下App启动那些事! app的启动方式: 1.)冷启动      当启动应用时,后台没 ...

  5. wemall app商城源码Android 获取XML网络数据并绑定到ListView

    wemall-mobile是基于WeMall的android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享Android 获取XML网络数据并绑定到Li ...

  6. Android学习笔记-App初始启动界面实现

    android手机上的很多应用程序启动时都会先显示一个图片,作为该应用程序的开始,该图片转瞬即逝.这个图片一般都会用应用的图标,作为广告来用. 例如: 它的实现方式很简单,我们以一个测试APP为例,介 ...

  7. 『BUG』Android Studio 64位 始终提示 JVM 启动不了,JDK配置失败,error code -1

    前几天 安装了 Android Studio 2.2. 本来一切都好,但是当我修改了 配置文件 studio64.exe.vmoptions 想修改 最大内存(保证运行流畅)后,AS 就再也运行不了了 ...

  8. Android studio 编译失败Error:Could not read entry ':app:processDebugManifest' from cache taskArtifacts.b

    Android studio 编译失败 Error:Could not read entry ':app:processDebugManifest' from cache taskArtifacts. ...

  9. 【转载】Android App应用启动分析与优化

    前言: 昨晚新版本终于发布了,但是还是记得有测试反馈app启动好长时间也没进入app主页,所以今天准备加个班总结一下App启动那些事! app的启动方式: 1.)冷启动  当启动应用时,后台没有该应用 ...

随机推荐

  1. 学习Ember遇到的一些问题

    1.在模板中不能省略结束标签: 在Ember的模板中,如果省略结束标签的话,会有好多无解的问题(可能是:不更新.更新后结构不对.model和view不同步等),苦苦找了很久.... 2.childVi ...

  2. Xcode Provisioning 路径

    ~/Library/MobileDevice/Provisioning Profiles

  3. 【转】使用JIRA搭建企业问题跟踪系统【个人推荐】

    免责声明:     本文转自网络文章,转载此文章仅为个人收藏,分享知识,如有侵权,请联系博主进行删除.     原文作者:Judy Shen的专栏     原文地址:使用JIRA搭建企业问题跟踪系统 ...

  4. jquery each函数对应的continue 和 break方法

    continue: return true; break: return false; $("#oGrid").each(function (i, v) { if (i == 0) ...

  5. Jquery 判断浏览器类型

    $(function() { //FireFox2及以上 if ($.browser.MozillaSideBar && $.browser.version >= "1 ...

  6. linux常用命令详解

    Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作.文件存取.目录操作.进程管理.文件权限设定等.所以,在Linux系统上工作离不开使用系统提供的命令.要想真正理解Linux系统, ...

  7. Node.js 随记

    http://nodejs.org/  下载并安装 node.js 最新版本 运行cmd,输入npm install xxxxxx 回车,安装扩展模块,如:express,socket.io等 运行c ...

  8. jquery mouseout事件冒泡解决方法

    在界面中最多使用的是div,如果一个div中包含多个div或img对象时, 针对mouseout鼠标移出事件时,并没有移出div层,但是当移动到div中的img时,也触发了该mouseout事件,这就 ...

  9. Oracle/PLSQL: Creating Functions

    In Oracle, you can create your own functions. 译:在ORACLE中,你可以创建你自己的方法. The syntax for a function is: ...

  10. 架构探险——从零开始写Java Web框架》第二章照作

    沉下来慢慢看实现了. 越来越觉得可以和DJANGO作对比. package org.smart4j.chapter2.model; /** * Created by sahara on 2016/3/ ...