扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
知乎Android版翻页
创新互联建站为客户提供专业的网站设计制作、成都网站建设、程序、域名、空间一条龙服务,提供基于WEB的系统开发. 服务项目涵盖了网页设计、网站程序开发、WEB系统开发、微信二次开发、手机网站制作等网站方面业务。
翻页,查看分页文件的上一个页面、下一个页面或任意存在的非当前页面。可以将实体书或者移动Web窗体中的内容进行改变,以观看不同内容。在互联网上运用时该机制还呈现可用于浏览到其他页的用户界面元素。
作用
翻页:跳转到上一个页面、下一个页面或任意存在的非当前页面。
本回答信息来自针对微信Android客户端以及知乎Android客户端的分析。\x0d\x0a\x0d\x0a我手机上装了一键清理的软件,平时从来不让微信在后台运行,但是每当打开知乎,不出三秒,微信消息就来了,消息并不固定,只是感觉微信被打开了,我在想知乎是不是跟微信合作,后台打开微信,然后以此来赚钱的呢?\x0d\x0a首先针对题主的疑问,准备的回答:不是\x0d\x0a\x0d\x0a实际的情况是,知乎调用微信sdk中分享的相关接口,微信sdk的相关接口里面,给微信发送了一个广播,微信app就被唤醒了,这不是知乎的主观行为,而是微信的(而且结合实际的分析来看,这个应该也算是正常的功能)。\x0d\x0a\x0d\x0a以下是详细分析:\x0d\x0a\x0d\x0a1首先说一下app的被唤醒(自启动)机制。\x0d\x0aapp自启动,基本上都是依靠Android的广播来实现的,而且是静态注册的广播(在AndroidManifest.xml文件中进行配置的广播),发送广播的方法在一般情况下是sendBroadcast。\x0d\x0a\x0d\x0a2按照惯例,反编译一下微信apk,然后搜索一下它能够由哪些静态广播进行唤醒,同时抓取广播相关的log。\x0d\x0a\x0d\x0a结合微信的AndroidManifest.xml文件以及抓取的log,可以知道相关的BroadcastReceiver是EntryReceiver,相关的action为\x0d\x0a\x0d\x0acom.tencent.mm.plugin.openapi.Intent.ACTION_HANDLE_APP_REGISTER\x0d\x0acom.tencent.mm.plugin.openapi.Intent.ACTION_HANDLE_APP_UNREGISTER\x0d\x0a\x0d\x0a从其名称上看,是和注册/注销相关,具体接收到广播之后做了哪些处理,这些就不赘述了。\x0d\x0a\x0d\x0aI/ActivityManager(1107):Startproccom.tencent.mmforbroadcastcom.tencent.mm/.plugin.base.stub.WXEntryActivity$EntryReceiver:pid=28779uid=10131gids={50131,3003,1028,1015,3002,3001}\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a3接下来分析知乎的代码\x0d\x0a\x0d\x0a搜索一下知乎反编译之后的smali文件(sendBroadcast),其中只有一条是和微信相关的\x0d\x0a\x0d\x0azhihu_2.0.3_176/smali/com/tencent/mm/sdk/openapi/j.smali:invoke-virtual{v0,v4,v1},Landroid/content/Context;-sendBroadcast(Landroid/content/Intent;Ljava/lang/String;)V\x0d\x0a\x0d\x0a再看一下反编译的java文件,能够比较清楚的看到,就是利用com.tencent.mm.plugin.openapi.Intent.ACTION_HANDLE_APP_REGISTER\x0d\x0a这个action来进行注册,检查一些必要的信息。\x0d\x0a\x0d\x0a根据这些信息,结合微信和知乎反编译之后的文件,已经可以完整的分析具体发生了哪些事情了。\x0d\x0a\x0d\x0acom.tencent.mm.sdk.openapi.j\x0d\x0a\x0d\x0apublicfinalbooleana(StringparamString)\x0d\x0a{\x0d\x0aif(!b("com.tencent.mm"))\x0d\x0a{\x0d\x0acom.tencent.mm.sdk.platformtools.a.a("MicroMsg.SDK.WXApiImplV10","registerappfailedforwechatappsignaturecheckfailed");\x0d\x0areturnfalse;\x0d\x0a}\x0d\x0athis.b=paramString;\x0d\x0acom.tencent.mm.sdk.platformtools.a.b("MicroMsg.SDK.WXApiImplV10","registerapp"+this.a.getPackageName());\x0d\x0aContextlocalContext=this.a;\x0d\x0aStringstr1="weixin://registerapp?appid="+this.b;\x0d\x0aStringstr2="com.tencent.mm"+".permission.MM_MESSAGE";\x0d\x0aIntentlocalIntent=newIntent("com.tencent.mm.plugin.openapi.Intent.ACTION_HANDLE_APP_REGISTER");\x0d\x0aStringstr3=localContext.getPackageName();\x0d\x0alocalIntent.putExtra("_mmessage_sdkVersion",553910273);\x0d\x0alocalIntent.putExtra("_mmessage_appPackage",str3);\x0d\x0alocalIntent.putExtra("_mmessage_content",str1);\x0d\x0alocalIntent.putExtra("_mmessage_checksum",b.a(str1,str3));\x0d\x0alocalContext.sendBroadcast(localIntent,str2);\x0d\x0acom.tencent.mm.sdk.platformtools.a.b("MicroMsg.SDK.MMessage","sendmmmessage,intent="+localIntent+",perm="+str2);\x0d\x0areturntrue;\x0d\x0a}\x0d\x0a\x0d\x0a4最后,因为偷懒,所以我只是大概的静态分析了相关代码,没发现知乎和微信做了什么丧失的事情,然后大概加了段logcheck了一下,从中也可以看出的确是和分享有关,至于使用时机及频率是否合适,这个和问题没什么关系,不做讨论。\x0d\x0a\x0d\x0aD/hillwind(5766):java.lang.Throwable\x0d\x0aD/hillwind(5766):atcom.hillwind.android.util.RLog.printStackTrace(RLog.java:11)\x0d\x0aD/hillwind(5766):atcom.tencent.mm.sdk.openapi.j.a(UnknownSource)\x0d\x0aD/hillwind(5766):atcom.zhihu.android.util.af.b(WeChatHelper.java:43)\x0d\x0aD/hillwind(5766):atcom.zhihu.android.widget.a.b(ActivityChooserModel.java:721)\x0d\x0aD/hillwind(5766):atcom.zhihu.android.widget.ShareActionProvider.setShareIntent(ShareActionProvider.java:98)\x0d\x0aD/hillwind(5766):atcom.zhihu.android.ui.fragment.bx.a(QuestionViewerFragment.java:221)\x0d\x0aD/hillwind(5766):atandroid.support.v4.app.j.a(FragmentManager.java:1973)\x0d\x0aD/hillwind(5766):atandroid.support.v4.app.g.onCreatePanelMenu(FragmentActivity.java:226)\x0d\x0aD/hillwind(5766):atandroid.support.v7.a.b.a(ActionBarActivity.java:233)\x0d\x0aD/hillwind(5766):atandroid.support.v7.a.g.a(ActionBarActivityDelegateICS.java:146)\x0d\x0aD/hillwind(5766):atandroid.support.v7.a.b.onCreatePanelMenu(ActionBarActivity.java:200)\x0d\x0aD/hillwind(5766):atandroid.support.v7.a.g$a.onCreatePanelMenu(ActionBarActivityDelegateICS.java:293)\x0d\x0aD/hillwind(5766):atcom.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:472)\x0d\x0aD/hillwind(5766):atcom.android.internal.policy.impl.PhoneWindow.doInvalidatePanelMenu(PhoneWindow.java:878)\x0d\x0aD/hillwind(5766):atcom.android.internal.policy.impl.PhoneWindow$1.run(PhoneWindow.java:257)\x0d\x0aD/hillwind(5766):atandroid.os.Handler.handleCallback(Handler.java:733)\x0d\x0aD/hillwind(5766):atandroid.os.Handler.dispatchMessage(Handler.java:95)\x0d\x0aD/hillwind(5766):atandroid.os.Looper.loop(Looper.java:136)\x0d\x0aD/hillwind(5766):atandroid.app.ActivityThread.main(ActivityThread.java:5140)\x0d\x0aD/hillwind(5766):atjava.lang.reflect.Method.invokeNative(NativeMethod)\x0d\x0aD/hillwind(5766):atjava.lang.reflect.Method.invoke(Method.java:515)\x0d\x0aD/hillwind(5766):atcom.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)\x0d\x0aD/hillwind(5766):atcom.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)\x0d\x0aD/hillwind(5766):atdalvik.system.NativeStart.main(NativeMethod)
19元。
1、安卓知乎会员每月是19元。
2、安卓知乎会员开通后会获得内容特权和功能特权。
Android 是一种基于 Linux® V2.6 内核的综合操作环境。最初,Android 的部署目标是移动电话领域,包括智能电话和更廉价的翻盖手机。但是, Android 全面的计算服务和丰富的功能支持完全有能力扩展到移动电话市场以外。Android 也可以用于其他的平台和应用程序。
黑莓和 iPhone 都提供了受欢迎的、高容量的移动平台,但是却分别针对两个不同的消费群体。黑莓是企业业务用户的不二选择。但是,作为一种消费设备,它在易用性和 “新奇特性” 方面难以和 iPhone 抗衡。Android 则是一个年轻的、有待开发的平台,它有潜力同时涵盖移动电话的两个不同消费群体,甚至可能缩小工作和娱乐之间的差别
如今,很多基于网络或有网络支持的设备都运行某种 Linux 内核。这是一种可靠的平台:可经济有效地进行部署和提供支持,并且可直接作为面向部署的良好的设计方法。这些设备的 UI 通常是基于 HTML 的,可通过 PC 或 Mac 浏览器查看。但并不是每个设备都需要通过一个常规的计算设备来控制。
Android 简史
Android 平台是 Open Handset Alliance 的成果,Open Handset Alliance 组织由一群共同致力于构建更好的移动电话的公司组成。这个组织由 Google 领导,包括移动运营商、手持设备制造商、零部件制造商、软件解决方案和平台提供商以及市场营销公司。从软件开发的观点看,Android 正处在开源领域的中心位置。
市场上第一款支持 Android 的手机是由 HTC 制造并由 T-Mobile 供应的 G1。这款设备从设想到推出花了大约一年的时间,惟一可用的软件开发工具是一些实行增量改进的 SDK 发行版。随着 G1 发行日的临近,Android 团队发布了 SDK V1.0,用于这个新平台的应用程序也浮出水面。
为了鼓励创新,Google 举办了两届 “Android Developer Challenges”,为优胜的参赛作品提供数百万美金的奖励。G1 问世几个月之后,随后就发布了 Android Market,它使用户可以浏览应用程序,并且可以将应用程序直接下载到他们的手机上。经过大约 18 个月,一个新的移动平台进入公众领域。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流