Android开发集成广告时请注意隐私权限设定
我为Android写二手房税费计算器软件时,引入了一个哇棒的广告系统。它提供了一个很简单的接入文档,约10分钟就植入了广告,我想其他的广告商也应该都大同小异。
但是软件发布到安智市场后,我下载回来用豌豆荚安装的时候,发现了一个敏感的问题,如下图所示。

他提示此应用有权限进行以下操作:
读取短信或彩信
允许应用程序读取您的手机或 SIM 卡中存储的短信。恶意应用程序可借此读取您的机密信息。
读取联系人数据
允许应用程序读取您手机上存储的所有联系人(地址)数据。恶意应用程序可借此将您的数据发送给其他人。
(基于网络的)粗略位置
访问粗略的位置源(例如蜂窝网络数据库)以确定手机的大体位置(如果可以)。恶意应用程序可借此确定您所处的大体位置。
读取联系人数据
允许应用程序读取您手机上存储的所有联系人(地址)数据。恶意应用程序可借此将您的数据发送给其他人。
读取手机状态和身份
允许应用程序访问设备的手机功能。有此权限的应用程序可确定此手机的号码和序列号,是否正在通话,以及对方的号码等。
而实际上,我这个软件根本就不需要这些权限,无端端还有了窃取隐私之嫌,我想因为这个原因选择不安装我软件的用户应该也不在少数。错不在广告商的接入文档,他把所有的配置都列举出来而已。真正关心这个问题的应该是程序员本身,一定要慎重把不需要的权限申请去掉。
修改后的权限设置如下:
我曾经尝试把读取话机状态的权限android.permission.READ_PHONE_STATE也关闭掉,但是这会引起程序崩溃,引起崩溃的堆栈显示是哇棒的SDK对此有需求,我已经发邮件反馈此情况,希望能够得到解决。
02-21 10:25:34.581: D/AndroidRuntime(26399): Shutting down VM
02-21 10:25:34.581: W/dalvikvm(26399): threadid=1: thread exiting with uncaught exception (group=0x4001d5a0)
02-21 10:25:34.591: E/AndroidRuntime(26399): FATAL EXCEPTION: main
02-21 10:25:34.591: E/AndroidRuntime(26399): java.lang.RuntimeException: Unable to start activity ComponentInfo{cn.webez.Fat4House/cn.webez.Fat4House.Fat4HouseActivity}: android.view.InflateException: Binary XML file line #8: Error inflating class com.wooboo.adlib_android.WoobooAdView
02-21 10:25:34.591: E/AndroidRuntime(26399): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1872)
02-21 10:25:34.591: E/AndroidRuntime(26399): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1893)
02-21 10:25:34.591: E/AndroidRuntime(26399): at android.app.ActivityThread.access$1500(ActivityThread.java:135)
02-21 10:25:34.591: E/AndroidRuntime(26399): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1054)
02-21 10:25:34.591: E/AndroidRuntime(26399): at android.os.Handler.dispatchMessage(Handler.java:99)
02-21 10:25:34.591: E/AndroidRuntime(26399): at android.os.Looper.loop(Looper.java:150)
02-21 10:25:34.591: E/AndroidRuntime(26399): at android.app.ActivityThread.main(ActivityThread.java:4385)
02-21 10:25:34.591: E/AndroidRuntime(26399): at java.lang.reflect.Method.invokeNative(Native Method)
02-21 10:25:34.591: E/AndroidRuntime(26399): at java.lang.reflect.Method.invoke(Method.java:507)
02-21 10:25:34.591: E/AndroidRuntime(26399): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
02-21 10:25:34.591: E/AndroidRuntime(26399): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
02-21 10:25:34.591: E/AndroidRuntime(26399): at dalvik.system.NativeStart.main(Native Method)
02-21 10:25:34.591: E/AndroidRuntime(26399): Caused by: android.view.InflateException: Binary XML file line #8: Error inflating class com.wooboo.adlib_android.WoobooAdView
02-21 10:25:34.591: E/AndroidRuntime(26399): at android.view.LayoutInflater.createView(LayoutInflater.java:518)
02-21 10:25:34.591: E/AndroidRuntime(26399): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:570)
02-21 10:25:34.591: E/AndroidRuntime(26399): at android.view.LayoutInflater.rInflate(LayoutInflater.java:623)
02-21 10:25:34.591: E/AndroidRuntime(26399): at android.view.LayoutInflater.inflate(LayoutInflater.java:408)
02-21 10:25:34.591: E/AndroidRuntime(26399): at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
02-21 10:25:34.591: E/AndroidRuntime(26399): at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
02-21 10:25:34.591: E/AndroidRuntime(26399): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:250)
02-21 10:25:34.591: E/AndroidRuntime(26399): at android.app.Activity.setContentView(Activity.java:1742)
02-21 10:25:34.591: E/AndroidRuntime(26399): at cn.webez.Fat4House.Fat4HouseActivity.onCreate(Fat4HouseActivity.java:60)
02-21 10:25:34.591: E/AndroidRuntime(26399): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1072)
02-21 10:25:34.591: E/AndroidRuntime(26399): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1836)
02-21 10:25:34.591: E/AndroidRuntime(26399): ... 11 more
02-21 10:25:34.591: E/AndroidRuntime(26399): Caused by: java.lang.reflect.InvocationTargetException
02-21 10:25:34.591: E/AndroidRuntime(26399): at java.lang.reflect.Constructor.constructNative(Native Method)
02-21 10:25:34.591: E/AndroidRuntime(26399): at java.lang.reflect.Constructor.newInstance(Constructor.java:415)
02-21 10:25:34.591: E/AndroidRuntime(26399): at android.view.LayoutInflater.createView(LayoutInflater.java:505)
02-21 10:25:34.591: E/AndroidRuntime(26399): ... 21 more
02-21 10:25:34.591: E/AndroidRuntime(26399): Caused by: java.lang.SecurityException: Requires READ_PHONE_STATE: Neither user 10112 nor current process has android.permission.READ_PHONE_STATE.
02-21 10:25:34.591: E/AndroidRuntime(26399): at android.os.Parcel.readException(Parcel.java:1322)
02-21 10:25:34.591: E/AndroidRuntime(26399): at android.os.Parcel.readException(Parcel.java:1276)
02-21 10:25:34.591: E/AndroidRuntime(26399): at com.android.internal.telephony.IPhoneSubInfo$Stub$Proxy.getIccSerialNumber(IPhoneSubInfo.java:307)
02-21 10:25:34.591: E/AndroidRuntime(26399): at android.telephony.TelephonyManager.getSimSerialNumber(TelephonyManager.java:723)
02-21 10:25:34.591: E/AndroidRuntime(26399): at com.wooboo.adlib_android.o.k(o.java)
02-21 10:25:34.591: E/AndroidRuntime(26399): at com.wooboo.adlib_android.o.g(o.java)
02-21 10:25:34.591: E/AndroidRuntime(26399): at com.wooboo.adlib_android.WoobooAdView.(WoobooAdView.java)
02-21 10:25:34.591: E/AndroidRuntime(26399): at com.wooboo.adlib_android.WoobooAdView.(WoobooAdView.java)
02-21 10:25:34.591: E/AndroidRuntime(26399): at com.wooboo.adlib_android.WoobooAdView.(WoobooAdView.java)
02-21 10:25:34.591: E/AndroidRuntime(26399): ... 24 more
最新更新,客服反馈很快,如下:
“如果不加那个权限的话,你的程序嵌入不了任何一家广告公司的广告。这个是我们统计数据必须要用的。我们写的权限都是要加的,去掉了,广告肯定会出现问题照成经济损失。”
原来是防范作弊的,明白了。
二手房税费计算器
2012年回到合肥,这次准备安心在合肥生活了。首要事是要去换套房子,于是自己写了个二手房税费计算器来计算那些杂七杂八的税,很沉痛的说,税有点重。
![]()
![]()
现在卖房的都是净得,有需要买房的同学可以手持此宝,仔细算下自己的总支出。