Categories
Android

c2dm 使用心得总结

关于 c2dm是什么? 不就多说了,翻墙从youtube下载 Google I/O 2010 – Building push applications for Android (C2DM) 转发到youku 方便观看, 地址为:http://v.youku.com/v_show/id_XMjQ3MTg1NzA0.html c2dm开发组提供的两个demo,似乎不是那么容易上手,可以试试最简单的的实例, Mark Murphy __The Busy Coder’s Guide To Advanced Android Development__ 的一个例子: https://github.com/commonsguy/cw-advandroid/tree/master/Push/C2DM 程序跑起来了,才有个直观的感受。c2dm整个流程是这样的: 简要说明一下:Android 客户端收到 registration_id 后,给你的app server发个http post,保存registration_id起来。然后你的appserver 给 https://android.apis.google.com/c2dm/send 这个url发送一些参数,就行了。 Mark Murphy的例子用到了Chrome to Phone 一个可重用的包com.google.android.c2dm 用于处理底层的 C2DM 交互事务 (例如配置,任务队列管理等)。但是这个包也是有一些问题的,遇到 “C2DM E Registration error SERVICE_NOT_AVAILABLE” 这个的Error,默认是没有去处理,你需要在AndroidManifest.xml 里声明处理 […]

Categories
Android

Andrord Market Filters base on Device configuration

http://developer.android.com/guide/appendix/market-filters.html In this document it described the filtering rules. But what exactly it is? In the past year, I payed lots of time to debug the market, gapps.So I decide to write a small tool to show Android Market collect your device configuration , mainly use for Android porting debug. You can easily to see […]

Categories
Android

Code Review

每周六下午都对自己的代码进行一次 code review.通过 svn log记录,总结主要修改的: 1. 先阅读一遍Android编码风格 2. 添加文件头版权信息 3. 添加注释 4. tab to 4 spaces , 通过 trac 阅读代码,很容易找出。 5. 重命名函数名及参数,让它看起来更合理。 6. 去掉 magic number 7. 删除重复的代码,没用的代码 8. 减少大函数,拆分成小函数 9. 源代码后面要空一行 10. 更新设计文档 对于第7点,比如boolean 函数力求简凑, – if (deviceRegistrationId == null) { – return false; – } else { – return true; – } + […]

Categories
Android

直接修改Market包显示支持收费软件,首页推荐软件

目前用MarketEnable,MarketAccess 之类的软件可以做到,但也有缺点:被修改apn,重启后无效。 大陆第三方ROM,一般都直接修改了电子市场包,观察一下安卓网自制的ROM,build.prop中都多了两行代码: hiapk.vending.operator.name=T-Mobile hiapk.vending.operator=310260 把运营商改为美国的。然后用 SystemProperties.get(“hiapk.vending.operator.name”); SystemProperties.get(“hiapk.vending.operator”); 替换 TelephonyManager.getSimOperatorName(); TelephonyManager.getSimOperator() 下面是我修改的2.2.7版本的patch: $ colordiff Vending_o/smali/com/android/vending/VendingApplication\$ApiClientContext.smali Vending/smali/com/android/vending/VendingApplication\$ApiClientContext.smali 239,245c239 < iget-object v2, p0, Lcom/android/vending/VendingApplication$ApiClientContext;->this$0:Lcom/android/vending/VendingApplication; < < invoke-static {v2}, Lcom/android/vending/VendingApplication;->access$100(Lcom/android/vending/VendingApplication;)Landroid/telephony/TelephonyManager; < < move-result-object v2 < < invoke-virtual {v2}, Landroid/telephony/TelephonyManager;->getSimOperatorName()Ljava/lang/String; — > const-string v2, “T-Mobile” 247c241 < move-result-object v7 — > move-object/from16 v7, v2 259,265c253 < iget-object v2, p0, […]

Categories
Android

PhoneFactory.getDefaultPhone must be called from Looper thread

写了一个设置、显示本机号码的小工具(A small tool displays and settings my phone number),详见”Android设置显示本机号码“。照着Settings写的,运行时,遇到了: 1487 AndroidRuntime E Caused by: java.lang.RuntimeException: PhoneFactory.getDefaultPhone must be called from Looper thread 1487 AndroidRuntime E at com.android.internal.telephony.PhoneFactory.getDefaultPhone(PhoneFactory.java:155) 1487 AndroidRuntime E … 24 more 目前好像除了PhoneApp,其他应用程序是无法调用 com.android.internal.telephony.Phone; com.android.internal.telephony.PhoneFactory 的,一般是通过发intent消息。仔细对比了一下,发现Settings的AndroidManifest.xml用到Phone的Activity属性添加了: android:process=”com.android.phone” 在AndroidManifest.xml 把android:sharedUserId=”android.uid.system”也加上,问题解决。像CM的固件, 编译的时候,android.uid.system 是 Android 默认的公共签名。如果使用android.uid.system的apk签名不不一样,是不能装的,会报错:ERROR/PackageManager(81): Package org.lytsing.myphonenumber has no signatures that match those in shared user […]

Pages: Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 Next