怎样启动极米 安装第三方appP以及判断极米 安装第三方appP是否安装

Android平台第三方应用分享到微信开发 | 查问题
汇聚最新编程技术,编程问题一网打尽
& Android平台第三方应用分享到微信开发
Android平台第三方应用分享到微信开发
[ 分类: ]
一、申请APPID
微信公共平台和微博分享一样,也需要申请一个ID,来作为调起微信、分享到微信的唯一标识。
申请微信APPID可以到微信平台上申请。具体的申请流程网站上有很详细的介绍,我这里就仅列出一些注意事项:
(1)申请APPID时的应用名字审核通过之后将不允许更改,所以申请时的应用名字一定要提前确定好。微信官方也有详细说明,如下图:
(2)应用签名问题:应用签名一定要填写正确,否则会出现第三方应用拉不起微信的情况。
首先可以下载微信官方提供的一个签名生成工具,打开这个应用输入第三方应用的包名就能拿到用于微信的应用签名。但是这里也有需要注意的地方:
1.我们平时开发使用的keystore是C:Usersliwei.android debug.keystore,而发布正式版肯定会有一个特定的keystore(比如:XXX.keystore)。因此,我们很有必要申请两个APPID,一个用于开发测试用,另一个用于正式发版。这样能够更方便平时的开发。
2.假如想使用别人的APPID或者运行别人的demo,可以按下面的步骤来做:
在eclipse中打开window—&preferences—-&Android—-&build如下图所示:
将别人的C:Usersliwei.android debug.keystore(微信提供的例子中有带这个debug.keystore,所以想运行微信提供的例子要在这里加载debug.keystore),在这加载进来,就可以使用了。
&&&&&&&& (3)申请成功之后的APPID如下:
二、使用微信API接口
1、微信开放平台的一些公共类
(1)微信SDK会用到的主要类的类图
上面这张图展示的是与微信通信过程中的请求类和响应类。第三方应用通过他们
附带的message字段来携带消息传输给微信进程。其中BaseResp有个内部类是ErrCode,它里面定义了几个常量字段,当我们向微信发送请求后它会作为返回字段返回到我们的应用中来,我们可以根据这个做相应的处理(比如弹个toast来提醒用户分享的状态)。
(2)Message相关的类图
上面提到过,第三方应用是通过请求类和响应类中的message字段来和微信通信的,那么下面的图就展示了Message相关类的类图:
第三方应用和微信就是通过上面的不同种类的Message对象来与微信进行通信,从而能达到想要的效果。
(3)通信相关类
上面的IWXAPI就是所说的通信类,所有与微信进行通信的工作都是他在做,我们可以通过下面的工厂类来生成一个IWXAPI对象。旁边的IWXAPIEventHandler接口是需要我们第三方应用来实现的,如果我们想处理微信的请求信息或是我们向他发请求后他返回的标识字段,我们可以按照实现这个接口(可以参考微信开放平台文档上有详细说明)。
2.1.2微信与第三方应用通信时序图
(4)第三方应用向微信发送消息时的时序图
应用只需要进行一次注册就行了,我们可以在一个Acitivity的onCreate()中注册。然后在以后的使用中只需要封装消息,让通信类发送即可。从前面的类图中可以看到,封装消息的顺序是首先生成需要发送的媒体对象,然后将媒体对象附加到消息对象中,接着建立请求对象,最后使用通信类发送即可。
在向微信发送消息的时候,会弹出一个分享到微信的弹框,包括分享到微信之后的消息展示,都是微信自己定义的UI展示,第三方应用是无法控制的(只是对不同消息类型,微信的展示也是不同的)。
下面就对代码做简单的引导性介绍,微信平台做的还是比较不错的。举一反三,就能做出来微信的对应功能了。
其对应的代码大致如下:
注册到微信
封装Message(以&为例)和发送到微信
(5)第三方应用接收微信请求信息的时序图
微信向第三方发送的请求信息分为两种:一种是第三方应用注册到微信后在聊天界面出现的应用图标(如下图所示)。然后点击这个图标能向第三方应用发送请求,第二种是针对微信的WXAppExtendObject类型的对象的,当用户点击了微信中的消息之后,微信就会去请求第三方应用完成请求。
它的时序图如下所示:
下面对第三方应用接收微信发送的消息的代码做一些简单的介绍,按照以下步骤来就可以了。
1.在工程中建立包名.wxapi的包,其中包名只的是AndroidManifest.xml下面配置的packageN
2.在新建的包下面新建一个WXEntryActivity类继承Activity,同时实现IWXAPIEventHandler接口(前面有提到过这个接口,用来接受微信的请求和返回信息)。
3.在onCreate()中调用 mApi.handleIntent(getIntent(),this);来等待微信的回调
4.实现IWXAPIEventHandler的onReq(微信发送请求到第三方应用时,会回调到该方法)和onResp(第三方应用发送到微信的请求处理后的响应结果,会回调到该方法)方法
5.另外需要注意在AndroidManifest.xml中配置WXEntryActivity时需要加上android:exported=”true”,主要是为了使微信进程能够调用第三方应用的进程。
其代码如下:
//在onCreate()中调用handleIntent().来等待微信进程的调用。
//微信进程请求第三方应用的回调。
//第三方应用发送Message到微信之后,微信返回的状态信息。
3.使用微信API注意事项
3.1微信公共平台问题
微信作为一个公共平台,还有一些自身的问题,下面是对我碰到的问题做一些描述:
第三方应用是根据微信添加的参数isappinstalled来判断接收方手机上是否已安装了APP,但是经验证发现,微信的这个判断并不准确,即有时候用户手机上安装了APP,但是isappinstalled的值却为0;有时候没装APP,isappInstalled的值又为1。已经将这个问题反映给了微信团队。
测试过程中会出现这种情况,会有个别手机会出现调不起微信客户端的情况。造成这种情况的原因是微信对缩略图的大小、title、description等参数的大小做了限制,所以有可能是大小超过了默认的范围。一般情况下缩略图超出比较常见。Title、description都是文本,一般不会超过。
3、分享到朋友圈时,是直接在第三方应用上弹出了分享框(这个有区别于分享给好友),分享完成之后,通过HOME键再回到微信,发现分享框依旧存在,并且还出现在桌面上。个人猜测,由于微信分享是新开了一个线程来处理,分享完成之后进程并没有被杀死,所以通过HOME键返回微信的时候会用到该进程。这个问题已经向微信反映。
4、通过第三方应用打开微信,假如用户没登录微信,会让用户登录微信,但是登录完成之后登录框还存在,并且这个时候其实已经登录成功了。造成这个问题的原因应该和第三个问题原因相似。
5、按照微信的要求,需要在工程中新建一个&应用包名.wxapi&的包,并在其下建立一个WXEntityActivity类。那么分享完成之后可能有两种情况发生:
&(1)假如没做任何处理,那么分享完成之后回到第三方应用界面会是一个黑色的界面,啥也没有。
&(2)假如在WXEntityActivity类中在IWXAPIEventHandler接口的实现方法onResp()中调用finish()方法将WXEntityActivity销毁掉,那么分享完成之后将会闪过一个黑色的界面回到第三方应用。
综上,其实我们可以发现,微信分享完成之后会到WXEntityActivity这个Activity中,第一种情况,因为WXEntityActivity没有布局文件,所以就是一个黑色的界面。第二种情况,由于finish掉了WXEntityActivity 这个Activity,所以是黑了一下。
这种情况将WXEntityActivity作为应用的界面展示就没有问题了,但是正常情况下,我们都是在已有的项目上加微信分享这个逻辑,所以,代码迁移也是影响比较大的。解决方法是可以用Android系统提供的android:theme=”@android:style/Theme.NoDisplay”。
6、可以反编译下微信的源码看看。
&以上的部分图片是从其它人写的博客里copy过来的。欢迎大家交流学习。您需要登录后才可以操作 |
该用户从未签到
怎么实现判断是否安装第三方app
怎么实现判断是否安装第三方app
TA的每日心情开心前天&10:07签到天数: 518 天连续签到: 5 天[LV.9]以坛为家II
//这样写是ok的,要注意在线打包。
var param1 = {
& && && && && && && && && && && && && & appData : 'com.tencent.mobileqq'//判断手机上是否安装qq应用
& && && && && && && && && && &&&};
& && && && && && && && && && &&&var data1 = JSON.stringify(param1);
& && && && && && && && && && &&&uexWidget.isAppInstalled(data1);
& && && && && && && && && && &&&//是否安装某第三方应用的回调方法
& && && && && && && && && && &&&uexWidget.cbIsAppInstalled = function(info) {
& && && && && && && && && && && && && & var result = JSON.parse(info);
& && && && && && && && && && && && && & if (result.installed == 0) {
& && && && && && && && && && && && && && && && &alert('installed');
& && && && && && && && && && && && && & } else {
& && && && && && && && && && && && && && && && &alert('not installed');
& && && && && && && && && && && && && & }
& && && && && && && && && && &&&}
该用户从未签到
有检测是否安装第三方应用的插件
& & isAppInstalled 是否安装某第三方应用
uexWidget.isAppInstalled(json)
TA的每日心情开心前天&09:13签到天数: 470 天连续签到: 4 天[LV.9]以坛为家II
该用户从未签到
有检测是否安装第三方应用的插件
& & isAppInstalled 是否安装某第三方应用
uexWidget.isAppInstalled(json ...
有例子吗,新手实在是看不懂,谢谢
TA的每日心情开心前天&10:07签到天数: 518 天连续签到: 5 天[LV.9]以坛为家II
有例子吗,新手实在是看不懂,谢谢
第三方应用数据,android平台为第三方应用包名;iOS平台为 Scheme U 这个肯定要自己知道的,其他按照示例做下替换就OK 了,然后在uexWidget.cbIsAppInstalled 回调中做逻辑处理;
该用户从未签到
第三方应用数据,android平台为第三方应用包名;iOS平台为 Scheme U 这个肯定要自己知道的,其他按照 ...
回调是要放在哪里呢?我这里没反应
TA的每日心情开心前天&10:07签到天数: 518 天连续签到: 5 天[LV.9]以坛为家II
回调是要放在哪里呢?我这里没反应
& & 如果之前判断正确调用的话,进入回调后
& & if(result.installed == 0){
& && && && &alert('installed');//已经安装**应用
& && &&&}else{
& && && && &alert('not installed');//还未安装**应用
该用户从未签到
如果之前判断正确调用的话,进入回调后
& & if(result.installed == 0){
&!DOCTYPE html&
&html class=&um landscape min-width-240px min-width-320px min-width-480px min-width-768px min-width-1024px&&
& & &head&
& && &&&&title&&/title&
& && &&&&meta charset=&utf-8&&
& && &&&&meta name=&viewport& content=&target-densitydpi=device-dpi, width=device-width, initial-scale=1, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0&&
& && &&&&link rel=&stylesheet& href=&css/fonts/font-awesome.min.css&&
& && &&&&link rel=&stylesheet& href=&css/ui-box.css&&
& && &&&&link rel=&stylesheet& href=&css/ui-base.css&&
& && &&&&link rel=&stylesheet& href=&css/ui-color.css&&
& && &&&&link rel=&stylesheet& href=&css/appcan.icon.css&&
& && &&&&link rel=&stylesheet& href=&css/appcan.control.css&&
& && &&&&script&
& && && && &window.uexOnload = function(type) {
& && && && && & alert(type);
& && && && && & //是否安装第三方app回调
& && && && && & uexWidget.cbIsAppInstalled = function(info) {
& && && && && && &&&var result = JSON.parse(info);
& && && && && && &&&if (result.installed == 0) {
& && && && && && && && &alert('installed');
& && && && && && &&&} else {
& && && && && && && && &alert('not installed');
& && && && && && &&&}
& && && && && & }
& && && && && & //启动第三方app回调
& && && && && & uexWidget.cbStartApp = function(info) {
& && && && && && &&&alert(info);
& && && && && & }
& && && && &}
& && &&&&/script&
& & &/head&
& & &body class=&um-vp & ontouchstart&
& && &&&&div id=&page_0& class=&up ub ub-ver bc-bg& tabindex=&0&&
& && && && &&!--content开始--&
& && && && &&div id=&listview&&&class=&ubt bc-border sc-bg&&&/div&
& && && && &&!--content结束--&
& && &&&&/div&
& && &&&&script src=&js/appcan.js&&&/script&
& && &&&&script src=&js/appcan.control.js&&&/script&
& && &&&&script src=&js/appcan.listview.js&&&/script&
& & &/body&
& & &script&
& && &&&appcan.button(&.nav-btn&, &btn-act&, function() {
& && && && &appcan.window.close(-1);
& && &&&});
& && &&&appcan.ready(function() {
& && && && &var lv = appcan.listview({
& && && && && & selector : &#listview&,
& && && && && & type : &thickLine&,
& && && && && & hasIcon : true,
& && && && && & hasAngle : false,
& && && && && & hasSubTitle : true,
& && && && && & hasTouchEffect : true,
& && && && && & multiLine : 1,
& && && && &});
& && && && &lv.set([{
& && && && && & &title& : &单位转换&,
& && && && && & &describe& : &世界单位转换(Unit Converter)一款界面简洁友好但是功能十分详尽实用的单位换算工具。支持换算的单位包括:重量长度温度速度面积容积能量时间压力力量功率密度光强度角度电脑单位。单位转换器可以转换几乎所有的单位。结果可以被复制到剪贴板。转换的单位项目:面积,距离,汇率,质量,温度,时间,声音&,
& && && && && & &icon& : &./css/images/dwhx.png&,
& && && && && & &id& : &1&
& && && && &}, {
& && && && && & title : &RealCalc 科学计算器&,
& && && && && & describe : &RealCalc是一款非常使用的科学计算器。看到界面后,想必大家都会用了,和现实中的科学计算器一模一样!&,
& && && && && & icon : &./css/images/jsq.png&,
& && && && && & id : &2&
& && && && &}]);
& && && && &lv.on(&click&, function(ele, obj, curEle) {
& && && && && & if (obj.id == &1&) {
& && && && && && &&&if (uexWidgetOne.getPlatform() == '0') {
& && && && && && && && &//IOS设备
& && && && && && && && &uexWidget.loadApp(url, '', '');
& && && && && && &&&} else {
& && && && && && && && &//android设备
& && && && && && && && &//uexWidget.isAppInstalled(&{'appData':'.lixpcalconvert.converterFree'}&);
& && && && && && && && &//通过包名是否安装第三方app
& && && && && && && && &var param1 = {
& && && && && && && && && & appData : '.lixpcalconvert.converterFree'//判断手机上是否安装qq应用
& && && && && && && && &};
& && && && && && && && &var data1 = JSON.stringify(param1);
& && && && && && && && &//alert(data1);
& && && && && && && && &uexWidget.isAppInstalled(data1);
& && && && && && && && &//uexWidget.loadApp('android.intent.action.VIEW', 'text/html', &/Soft/Controller.ashx?action=download&tpl=1&id=4003988&);
& && && && && && && && &//uexWidget.loadApp(&android.intent.action.CREATE_SHORTCUT&,&&,&&);
& && && && && && && && &//uexWidget.startApp(0, &.lixpcalconvert.converterFree&);
& && && && && && &&&}
& && && && && & } else if (obj.id == &2&) {
& && && && && && &&&if (uexWidgetOne.getPlatform() == '0') {
& && && && && && && && &//IOS设备
& && && && && && && && &uexWidget.loadApp(url, '', '');
& && && && && && &&&} else {
& && && && && && && && &//android设备
& && && && && && && && &//uexWidget.loadApp('android.intent.action.VIEW', 'text/html', &/Soft/Controller.ashx?action=download&tpl=1&id=4003988&);
& && && && && && && && &uexWidget.loadApp(&uk.co.quarticsoftware.REALCALC&, &&, &&);
& && && && && && &&&}
& && && && && & }
& && && && &});
& && &&&});
& & &/script&
没有反应,你能帮我看看是哪里的问题吗
该用户从未签到
//这样写是ok的,要注意在线打包。
var param1 = {
& && && && && && && && && && && && && & appData : ' ...
我复制你代码,没有用。
AppCan官方微信关于第三方登录,你应该知道的_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
关于第三方登录,你应该知道的
||暂无简介
人人都是产品经理社区()是...|
总评分0.0|
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩4页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢不越狱不安装第三方APP检测iphone 6s芯片图文教程 - 手机技巧 - 电脑百事网
手机扫描二维码
不越狱不安装第三方APP检测iphone 6s芯片图文教程
编辑:王新和
因受苹果6S两种芯片风波门影响,所购使用的是何种处理器,目前网络上到处都有测试芯片型号的APP下载,部分软件甚至需要先越狱之后才可以安装测试APP,这对于部分不想越狱或者不爱折腾的用户来说,这些办法不理想,其实无需安装任何测试的APP,也不需先越狱,无论还是6s Plus,均可以直接使用本机读出处理器芯片代码,只要比对一下,即可迅速判断出你的iPhone6s的芯片厂商与型号。因我手上没有可测试的6S,就用的是6和我同事的6布拉斯进行测试。大致流程为 打开【设置】- 点:【隐私】-【诊断与用量】-点【诊断与用量数据】-【stacks+preferences-2015-当天的日期】点开,获得的页面第七行即可看出使用的是什么芯片,如下为详细图片教程1,首先在手机上打开【设置】应用,如下图所示:2,找到【隐私】,如下图所示:3,点【诊断与用量】,如下图所示:4,-点【诊断与用量数据】,如下图所示:5,【stacks+preferences-2015-当天的日期】点开,如下图所示:
6,获得的页面第七行即可看出使用的是什么芯片,如三星一般都是代码S带数字,台积电代码为T带数字,通过实测我的苹果6全网通为,台积电7000,我同事的6布拉斯双4G也同为台积电7000.同理此法是可以用于苹果全系列机型的手机检测,大家最为关心的6S因采用的是2种不同工艺的芯片,这才是大家关注的焦点,手上有6S的伙伴不妨测试看看.

我要回帖

更多关于 微信启动第三方app 的文章

 

随机推荐