精华内容
下载资源
问答
  • 模拟短信APP

    2015-12-18 23:03:43
    模拟短信 酒桌脱身,伪装10086 95533装X
  • 读取通讯录短信定位信息APP源码,仅供学习研究禁止非法用途!
  • Whatsapp信息和图片不出去解决方法,如何正确使用Whatsapp
  • 千月影视APP源码新双端APP源码 完美去除注册短信验证码
  • 该demo整体采用MVP的框架,运用了双进程守护进行了app保活,使其在锁屏状态下仍然能够读取短信
  • Android项目源码智能短信管理app是一个基于安卓的智能短信管理app,实现类似邮件的收件箱、件箱、已发送、草稿箱等分文件夹管理。还有群组功能,和类似QQ会话列表的回话界面,我是在模拟器上测试的。没有短信数据...
  • App读取短信实现

    千次阅读 2020-05-24 16:57:57
    应用中通常会涉及到读取短信,下面通过自动获取短信验证码演示了如何在应用中读取短信。 权限 <uses-permission android:name="android.permission.RECEIVE_SMS" /> <uses-permission android:name=...

    应用中通常会涉及到读取短信,下面通过自动获取短信验证码演示了如何在应用中读取短信。

    权限

    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <uses-permission android:name="android.permission.READ_SMS" />
    

    通过广播监听短信

    注意:这种方式只有在新接收到消息的时候才会执行代码,并不会读取收件箱中已读或未读的消息。

    class SmsReceiver extends BroadcastReceiver {
        private OnSmsCatchListener mCallback;
        private String mPhoneNumber;
        private String mFilterRegex;
    
        public void setCallback(OnSmsCatchListener<String> callback) {
            this.mCallback = callback;
        }
    
        @Override
        public void onReceive(Context context, Intent intent) {
            final Bundle bundle = intent.getExtras();
            try {
                if (bundle != null) {
                    final Object[] pdusObj = (Object[]) bundle.get("pdus");
                    for (int i = 0; i < pdusObj.length; i++) {
                        SmsMessage currentMessage = getIncomingMessage(pdusObj[i], bundle);
                        String phoneNumber = currentMessage.getDisplayOriginatingAddress();
    
                        if (mPhoneNumber != null && !mPhoneNumber.equals(phoneNumber)) {
                            return;
                        }
    
                        String message = currentMessage.getDisplayMessageBody();
                        if (mFilterRegex != null && !message.matches(mFilterRegex)) {
                            return;
                        }
    
                        if (mCallback != null) {
                            mCallback.onSmsCatch(message);
                        }
                    }
                }
    
            } catch (Exception e) {
            }
        }
    
        private SmsMessage getIncomingMessage(Object aObject, Bundle bundle) {
            SmsMessage currentSMS;
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                String format = bundle.getString("format");
                currentSMS = SmsMessage.createFromPdu((byte[]) aObject, format);
            } else {
                currentSMS = SmsMessage.createFromPdu((byte[]) aObject);
            }
            return currentSMS;
        }
    
    
        public void setPhoneNumber(String phoneNumber) {
            this.mPhoneNumber = phoneNumber;
        }
    
        public void setFilterRegex(String regex) {
            this.mFilterRegex = regex;
        }
    
        public interface OnSmsCatchListener {
            void onSmsCatch(String message);
        }
    }
    

    接下来注册广播:

    SmsReceiver receiver = new SmsReceiver();
    receiver.setCallback(onSmsCatchListener);
    receiver.setPhoneNumber(phoneNumber);
    receiver.setFilterRegex(regex);
    IntentFilter filter = new IntentFilter();
    filter.addAction("android.provider.Telephony.SMS_RECEIVED");
    activity.registerReceiver(receiver, filter);
    

    最后在onStop/onDestroy中取消注册:activity.unregisterReceiver(receiver)。

    注意:系统这个广播是有序广播,当其他应用程序先获取到了这个广播再传递给你,如果广播在其他应用程序中被注销了就接收不到了。通过设置priority的数值,其实有时是不管用的,现在在一些定制的系统或是有安全软件的情况下,短信往往都会被截取并注销掉广播监听。

    通过ContentObserver监听短信

    注意:这种方式可以获取手机上所有的短信,包括已读未读的短信

    public class SmsObserver extends ContentObserver {
    
        private OnSmsCatchListener mCatchListener;
        private String mPhoneNumberFilter;
        private String mSmsCatchRegex;
        private WeakReference<Activity> mActivityRef;
    
        public void setCallback(OnSmsCatchListener listener) {
            this.mCatchListener = listener;
        }
    
        public SmsObserver(Activity activity, Handler handler) {
            super(handler);
            mActivityRef = new WeakReference<Activity>(activity);
        }
    
        @Override
        public void onChange(boolean selfChange) {
            super.onChange(selfChange);
    
            if (null == mCatchListener || null == mActivityRef.get()) {
                return;
            }
    
            Cursor cursor = null;
            try {
                final Uri uri = Uri.parse("content://sms/");
                final String[] projection = new String[]{"address", "body"};
                cursor = mActivityRef.get().getContentResolver().query(uri, projection, "read=?", new String[]{"0"}, "date desc");
                if (cursor.moveToFirst()) {
                    do {
                        final String address = cursor.getString(cursor.getColumnIndex("address"));
                        if (!TextUtils.isEmpty(mPhoneNumberFilter) && !mPhoneNumberFilter.equals(address)) {
                            Pattern p = Pattern.compile(mPhoneNumberFilter);
                            Matcher m = p.matcher(address);
                            if (!m.matches()) {
                                return;
                            }
                        }
    
                        final String message = cursor.getString(cursor.getColumnIndex("body"));
                        if (!TextUtils.isEmpty(mSmsCatchRegex)) {
                            Pattern p = Pattern.compile(mSmsCatchRegex);
                            Matcher m = p.matcher(message);
                            if (m.find()) {
                                mCatchListener.onSmsCatch(m.group(0));
                                return;
                            }
                        }
                    } while (cursor.moveToNext());
                }
            } catch (Exception e) {
            } finally {
                if (cursor != null) {
                    cursor.close();
                }
            }
        }
    
        /**
         * 手机号码过滤
         *
         * @param filter 手机号或者手机号正则表达式
         */
        public void setPhoneNumberFilter(String filter) {
            this.mPhoneNumberFilter = filter;
        }
    
        public void setSmsCatchRegex(String regex) {
            this.mSmsCatchRegex = regex;
        }
    }
    

    然后通过getContentResolver().registerContentObserver(Uri.parse(“content://sms/”), true, mSmsObserver)注册监听。

    最后通过getContentResolver().unregisterContentObserver(mSmsObserver)注销监听。

    SMS结构

    字段描述值域/例子
    _id短消息序号
    thread_id对话的序号
    address发件人地址,手机号
    person发件人,返回一个数字就是联系人列表里的序号,陌生人为空
    date消息接收日期,long型
    date_sent消息发送日期,long型
    protocol协议SMS_RPOTO = 0
    MMS_PROTO = 1
    read是否阅读未读 = 0
    已读 = 1
    status状态STATUS_NONE = -1
    STATUS_COMPLETE = 0
    STATUS_PENDING = 64
    STATUS_FAILED = 128
    type消息的类型MESSAGE_TYPE_ALL = 0
    MESSAGE_TYPE_INBOX = 1
    MESSAGE_TYPE_SENT = 2
    MESSAGE_TYPE_DRAFT = 3
    MESSAGE_TYPE_OUTBOX = 4
    MESSAGE_TYPE_FAILED = 5
    MESSAGE_TYPE_QUEUED = 6
    reply_path_present消息上是否设置了TP-Reply-Path位
    subject消息的主题,如果存在
    body消息内容
    service_center短信服务中心号码编号+8613800755500
    locked消息是否被锁定
    error_code与发送或接收此消息相关的错误代码
    seen指示该消息是否已被用户看到。该标志将用于确定是否需要弹出状态栏通知
    timed
    deleted
    sync_state
    marker
    source
    bind_id
    mx_status
    mx_id
    out_time
    account
    sim_id
    block_type
    advanced_seen
    b2c_ttl
    b2c_numbers
    fake_cell_type
    url_risky_type

    关于权限问题

    android6.0(API23)以后读取短信权限必须在运行时申请。

    感谢大家的支持,如有错误请指正,如需转载请标明原文出处!

    展开全文
  • APP要做哪些测试?APP测试要注意哪些问题?

    千次阅读 多人点赞 2019-08-02 16:23:38
    APP要做哪些测试?APP测试要注意哪些问题?对于移动测试,测试员不得不基于用户移动使用模式考虑移动相关的功能。而针对手机应用软件APP的系统测试,我们通常从如下几个角度开展:功能测试(流程测试、功能点测试)、...

    APP要做哪些测试?APP测试要注意哪些问题?对于移动测试,测试员不得不基于用户移动使用模式考虑移动相关的功能。而针对手机应用软件APP的系统测试,我们通常从如下几个角度开展:功能测试(流程测试、功能点测试)、兼容性测试、交叉测试、安装卸载测试(包括应用的升级)、压力测试(接口压力测试)、安全测试等等。

    在这里插入图片描述

    一、APP要做哪些测试?

    1、功能测试:对具体功能点一一测试,验证确认每个点都实现满足需求的相应功能。

    2、APP兼容性测试:根据屏幕尺寸、系统进行适配测试;对市场上主流的设备安装应用执行测试(如果有特定针对群体,应该根据实际用户数据接入设备进行分析,对靠前的机型进行适配测试),确保都能正常运行。

    3、压力测试:用户量大,交互性高的应用需对接口执行压力测试,确应用在海量的用户使用的情况下能正常运行。

    4、UI/UE测试:主要是一些适配,用户体验方面,交互方面的测试。

    5、用户行为统计测试:确保手头的行为统计分析定义文档为最新版本,且与开发人员手中的文档一致;确保产品经理在文档中所定义的页面在该产品中都是存在的;尽可能真实地模拟用户行为;核对统计日志,确保各项操作所对应的页面ID以及操作ID都是正确的。

    6、安全测试 :软件权限、数据安全性、通讯安全性、人机接口安全性。

    7、安装卸载测试:确保应用都能正确安装、卸载,且能正确运行(注意应用的升级测试:升级前后的状态)。

    8、交叉测试:对于正在运行的应用,若进入短信、电话等其它软件响应的情况,不会影响被测试应用,且会保证应用能正确运行;杀掉进程时再重新打开APP;多个APP切换数据的保存等。

    9、协议测试:模拟客户端直接发送协议包给服务器,看服务器是否有一定的校验,认不认客户端发过来的数据。协议测试主要是为了处理用户发送恶意协议到服务器,骗过服务器的校验。

    10、异常测试:多次快速点击切换页面的响应情况?横屏竖屏的快速操作:切换菜单,播放,下载等;服务器宕机或出现404、502等情况下的测试。

    11、弱网测试:APP在2G/3G/4G/wifi下的表现情况,网络环境变化时,APP的应对情况:是否有适当提示?从有网环境到无网环境时,APP的反馈如何?从无网络环境回到有网络环境时,是否能自动加载数据,且多久才能开始加载数据?

    12、电量测试:设备在不同电量时(低于10%,50%,95%),APP的响应以及操作流畅度;设备在充电时,APP的响应以及操作流畅度;设备意外断电时,APP数据丢失情况等。

    二、对于APP测试还需要注意以下几点问题:

    1、并发(中断)测试:闹铃弹出框提示,另一个应用的启动、视频音频的播放,来电、用户正在输入等,语音、录音等的播放时强制其他正在播放的要暂停;

    2、数据来源的测试:输入,选择、复制、语音输入,安装不同输入法输入等;

    3、push(推送)测试:在开关机、待机状态下执行推送,消息先死及其推送跳转的正确性;应用在开发、未打开状态、应用启动且在后台运行的情况下是push显示和跳转否正确;推送消息阅读前后数字的变化是否正确;多条推送的合集的显示和跳转是否正确;

    4、分享跳转:分享后的文案是否正确;分享后跳转是否正确,显示的消息来源是否正确;

    5、触屏测试:同时触摸不同的位置或者同时进行不同操作,查看客户端的处理情况,是否会crash等;

    测试人员要学会总结:当基础的测试工作没有做好,线上漏测多,测试结论经常被推翻时,在测试方向上的专业性就会受到质疑,其他同事都不相信你了怎么办?“学如逆水行舟,不进则退”,少些抱怨和不满,资深测试工程师都是在不断学习不断尝试之后才走到今天的,所以,作为测试员的你,提升自己的测试水平才是最重要的!

    展开全文
  • 原生App与Web APP优劣势分析

    千次阅读 多人点赞 2019-06-25 10:45:33
    现如今APP开发有两个主流的方向:原生App 以及移动Web App。那么您是否知道这两者有何区别?什么是原生APP,什么是web APP?今天小编在此对二者进行一个对比。 ☛ 什么是原生APP 在智能手机上运行的App应用程序有...

    现如今APP开发有两个主流的方向:原生App 以及移动Web App。那么您是否知道这两者有何区别?什么是原生APP,什么是web APP?今天小编在此对二者进行一个对比。
    在这里插入图片描述
    ☛ 什么是原生APP
    在智能手机上运行的App应用程序有NativeAPP(基于本地操作系统运行)和WebAPP(基于手机浏览器运行),其中NativeApp就是原生App的意思,所以原生App开发也就是指基于本地操作系统的App开发服务。如今市面上多数的APP软件开发都是使用的原生程序编写的应用程序,也就是说大部分的手机APP属于原生APP应用软件。原生APP访问和兼容的能力也比较好,可以支持在线或者离线消息推送或是进行本地资源访问,以及摄像、拨号、蓝牙、功能的调取。原生APP开发有许多的优势,如原生APP是针对不同的平台为用户提供不同的体验、原生应用可以节约宽带成本、访问本地资源、打开的速度更快并为用户提供最佳的用户体验和优质的用户界面等。

    ☛ 什么是web APP
    WebApp是一种框架型APP开发模式(HTML5APP框架开发模式),具有跨平台的优势,该模式通常由“HTML5云网站+APP应用客户端”两部分构成,APP应用客户端只需安装应用的框架部份,而应用的数据则是每次打开APP的时候,去云端取数据呈现给手机用户。

    ☛原生APP和web APP的对比
    在这里插入图片描述

    1、开发方面

    原生APP:
        每一种移动操作系统都需要独立的开发项目,iphone版本、Ipad版本、安卓版本。每种平台都需要独立的开发语言。需要使用各自的软件开发包,开发工具以及各自的控件。开发成本高、开发速度慢、维护成本高。三个平台(IOS、安卓、windows)的规则、推广、运营都不相同。官方应用商店对APP上线审核流程比较复杂而且很慢,会严重影响APP的发布上线。

    web APP:
        因为运行在移动设备的浏览器上,所以只需要一个开发项目。可以通过HTML、CSS或者JavaScript来进行WebAPP的开发。开发成本低、开发速度快。

    2、功能方面

    原生APP:
        原生APP是一个系统性的应用程序,可以类比于电脑上的软件。原生app可以调用移动终端的硬件设备, 比如:麦克风、摄像头、短信、GPS、蓝牙、重力感应等。实现功能丰富

    web APP:
        Web APP可以类比于电脑上的网页。WebAPP更多是页面展示类的APP。只能使用有限的移动硬件设备功能。更多用于页面展示,侧重于简单的交互,无法使用很多硬件设备独特的功能。

    3、应用安装与使用方面

    原生APP:
        需要通过应用商店将原生app下载到手机上或移动终端上。以独立的应用程序运行用户必须手动去下载并安装这些原生App,原生应用可以节约宽带成本,可以访问本地资源、缓存。
    web APP:
        过移动设备上的浏览器访问,软件更新只需要更新服务器就够了,用户层面不需要做任何操作。不需要安装客户端,可以节省手机终端的内存空间。

    4、版本控制方面

    原生APP:
        用户可以自由的选择是否更新软件版本,所以会出现不同用户同时使用不同版本的情况。同时也会导致维护成本比较高。使用旧版本的用户无法体验新版本的完整功能。
    web APP:
        所有用户都是同样的版本,所有用户获得的功能都是相同的。版本更新比较方便,直接在服务器册更新数据即可。一个功能做好了就上线,一天更细几十次都毫无压力。如果客户端只是一个浏览器,那一切都会变得非常简单。另外web统一性高,跨平台使用时开发量少。由于其入口不明显(浏览器导航或者随意点击链接进入),让用户记住的门槛也随之拔高。每次推广导入的流量都可能沦为一次性努力,用户留存低。

    5、加载速度方面

    原生APP:
        原生APP由“云服务器数据+APP应用客户端”两部分构成,APP应用所有的UI元素、数据内容、逻辑框架均安装在手机终端上。访问的时候,不需要重新下载加载应用页面框架,只需要加载数据即可。所以加载速度更快,页面响应更快。
    web APP:
        而WebAPP打开一个页面,都需重新加载页面的所有元素,访问速度受手机终端性能和网络环境的限制,导致加载速度慢,而且操作频繁容易卡死。

    总结:

        原生App偏向于交互,注重用户体验(导航切换、勾选选项、图片、视频等操作),WebAPP偏向与浏览和简单的交互。一些功能需要访问硬件(摄像头、传感器等),使用原生App,WebAPP用于信息展示。成本有限时,核心的功能使用原生APP,周边辅助的功能可以使用WebApp。现状:比较流行的方法就是将原生App和WebApp进行融合,就是说应用大的框架是原生的,其他详细的内容就通过网页封装,这样做的好处就是在方便更新的同时,也能保证核心功能的交互体验。

    展开全文
  • 这里以超级课程表APP为例,使用python抓取超级课程表里用户的话题。主要是练习python爬取app的一些方式和技巧。 1、抓取APP数据包 表单: 抓取手机APP数据 表单中包括了用户名和密码,当然都是加密过了的,...

    大多数手机APP里面返回的是json格式数据,或者一堆加密过的数据 。这里以超级课程表APP为例,使用python抓取超级课程表里用户发的话题。主要是练习python爬取app的一些方式和技巧。

    1、抓取APP数据包

      表单:

    抓取手机APP数据
    抓取手机APP数据

    表单中包括了用户名和密码,当然都是加密过了的,还有一个设备信息,直接post过去就是。

    另外必须加header,一开始我没有加header得到的是登录错误,所以要带上header信息。

    手机APP数据抓取
    手机APP数据抓取

    2、登录

    登录代码:(注:这里用到了一些Python的库,参考自:http://www.qk.gam7.cpm

    import urllib2 
    from cookielib import CookieJar 
    loginUrl = 'http://120.55.151.61/V2/StudentSkip/loginCheckV4.action' headers = { 
     'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', 
     'User-Agent': 'Dalvik/1.6.0 (Linux; U; Android 4.1.1; M040 Build/JRO03H)', 
     'Host': '120.55.151.61', 
     'Connection': 'Keep-Alive', 
     'Accept-Encoding': 'gzip', 
     'Content-Length': '207', 
     } 
    loginData = 'phoneBrand=Meizu&platform=1&deviceCode=868033014919494&account=FCF030E1F2F6341C1C93BE5BBC422A3D&phoneVersion=16&password=A55B48BB75C79200379D82A18C5F47D6&channel=MXMarket&phoneModel=M040&versionNumber=7.2.1&' 
    cookieJar = CookieJar() 
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookieJar)) 
    req = urllib2.Request(loginUrl, loginData, headers) 
    loginResult = opener.open(req).read() 
    print loginResult

    登录成功 会返回一串账号信息的json数据

    手机APP数据抓取

    和抓包时返回数据一样,证明登录成功

    手机APP数据抓取
    手机APP数据抓取

    3、抓取数据

    用同样方法得到话题的url和post参数,做法就和模拟登录网站一样。

    下见最终代码,有主页获取和下拉加载更新。可以无限加载话题内容。

    #!/usr/local/bin/python2.7 # -*- coding: utf8 -*- """ 
     超级课程表话题抓取 
    """ import urllib2 
    from cookielib import CookieJar 
    import json 
    
    
    ''' 读Json数据 ''' def fetch_data(json_data): 
     data = json_data['data'] 
     timestampLong = data['timestampLong'] 
     messageBO = data['messageBOs'] 
     topicList = [] 
     for each in messageBO: 
     topicDict = {} 
     if each.get('content', False): 
     topicDict['content'] = each['content'] 
     topicDict['schoolName'] = each['schoolName'] 
     topicDict['messageId'] = each['messageId'] 
     topicDict['gender'] = each['studentBO']['gender'] 
     topicDict['time'] = each['issueTime'] 
     print each['schoolName'],each['content'] 
     topicList.append(topicDict) 
     return timestampLong, topicList 
    
    
    ''' 加载更多 ''' def load(timestamp, headers, url): 
     headers['Content-Length'] = '159' 
     loadData = 'timestamp=%s&phoneBrand=Meizu&platform=1&genderType=-1&topicId=19&phoneVersion=16&selectType=3&channel=MXMarket&phoneModel=M040&versionNumber=7.2.1&' % timestamp 
     req = urllib2.Request(url, loadData, headers) 
     loadResult = opener.open(req).read() 
     loginStatus = json.loads(loadResult).get('status', False) 
     if loginStatus == 1: 
     print 'load successful!' 
     timestamp, topicList = fetch_data(json.loads(loadResult)) 
     load(timestamp, headers, url) 
     else: 
     print 'load fail' 
     print loadResult 
     return False loginUrl = 'http://120.55.151.61/V2/StudentSkip/loginCheckV4.action' topicUrl = 'http://120.55.151.61/V2/Treehole/Message/getMessageByTopicIdV3.action' headers = { 
     'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', 
     'User-Agent': 'Dalvik/1.6.0 (Linux; U; Android 4.1.1; M040 Build/JRO03H)', 
     'Host': '120.55.151.61', 
     'Connection': 'Keep-Alive', 
     'Accept-Encoding': 'gzip', 
     'Content-Length': '207', 
     } 
    
    ''' ---登录部分--- ''' 
    loginData = 'phoneBrand=Meizu&platform=1&deviceCode=868033014919494&account=FCF030E1F2F6341C1C93BE5BBC422A3D&phoneVersion=16&password=A55B48BB75C79200379D82A18C5F47D6&channel=MXMarket&phoneModel=M040&versionNumber=7.2.1&' 
    cookieJar = CookieJar() 
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookieJar)) 
    req = urllib2.Request(loginUrl, loginData, headers) 
    loginResult = opener.open(req).read() 
    loginStatus = json.loads(loginResult).get('data', False) 
    if loginResult: 
     print 'login successful!' else: 
     print 'login fail' 
     print loginResult 
    
    ''' ---获取话题--- ''' 
    topicData = 'timestamp=0&phoneBrand=Meizu&platform=1&genderType=-1&topicId=19&phoneVersion=16&selectType=3&channel=MXMarket&phoneModel=M040&versionNumber=7.2.1&' 
    headers['Content-Length'] = '147' 
    topicRequest = urllib2.Request(topicUrl, topicData, headers) 
    topicHtml = opener.open(topicRequest).read() 
    topicJson = json.loads(topicHtml) 
    topicStatus = topicJson.get('status', False) 
    print topicJson 
    if topicStatus == 1: 
     print 'fetch topic success!' 
     timestamp, topicList = fetch_data(topicJson) 
     load(timestamp, headers, topicUrl)

    结果:

    手机APP数据抓取
    手机APP数据抓取

     

    部分练习代码参考自:http://www.ruanally.com

    展开全文
  • 发送短信: Linking.openURL("smsto:10086") 发送邮件: Linking.openURL("mailto:10000@qq. com") 打开其他APP: Linking.openURL('flutter://li.zhuoyuan') //其他app定义的scheme以及host。 详解一下打开...
  • 19.最省钱的app发短信方法

    万次阅读 2015-03-17 18:07:11
    在创业团队中,一个重要的原则是能省就省,该花就花,把银子用在刀刃上。 现在的app,为了获取用户的社交...用手机号注册就涉及到一个发送短信验证码的问题,那怎么才能在短信服务上投入最少的成本获得最大的收益?
  • Android开发app实现发送短信功能

    万次阅读 2018-05-28 14:11:01
    程序使用手机发短信的方法短信收发:◆发送短信只需要几行代码,如下:SmsManager sms = SmsManager.getDefault();PendingIntent pi = PendingIntent.getBroadcast(this, 0, new Intent(), 0);sms.sendTextMessage...
  • APP inventor 短信群发

    千次阅读 2019-05-30 17:13:00
    转载于:https://www.cnblogs.com/xtmp/p/10950769.html
  • APP录获取通讯录+短信+定位源码

    千次阅读 热门讨论 2021-05-31 10:05:10
    高价购买新版安卓IOS双端通讯录获取短信获取定位获取在线获取客户信息APP软件源码 解决读取手机通讯录APP不报毒软件程序源码获取系统客户同意授权通讯软件! 本软件只提供给企业获取自己业务员手机里面的信息使用(有...
  • APP 信息管理平台——需求概述

    千次阅读 2019-08-28 10:58:02
    本项目案例 是 开发一个 企业级 的 CMS 系统——APP 信息管理平台。 针对目前的 Android 应用市场,开发一套后台管理平台——APP 信息管理平台,以 进行 APP 应用的维护管理工作。该平台分为两个管理系统:APP ...
  • 比如闪屏页、首页弹框、首页banner、webView、极光推送消息点击跳转以及通过短信跳转到App。 对此,我们制定了一套专属于公司的liubike协议,和淘宝的taobao://、微信的weixin://等类似,liubike协议遵循于URL ...
  • uni-app实战仿微信app开发

    千人学习 2020-03-08 01:48:48
    适用人群 具有Html+Css+JavaScript基础,有一定的Vue.js基础,挑战高薪职位 ...实战仿微信app和小程序全栈开发,开启纯nvue原生渲染,大大提高性能。一次开发,同时搞定Android、iOS和小程序端等。 课程大纲见以下图!
  • 短信链接唤起app

    千次阅读 2017-08-16 11:00:50
    例如,电商为用户发送优惠券之后经常会下发一条短信:某某优惠券已发送到您的账户中,点击 xxx 链接即可查看!此时当用户点击链接之后会直接打开本地APP,进入相关页面。  功能实现:  ...
  • 前言: 随着APP产品的迭代,运营的过程...导致沉睡用户无法送达的,除非你是微信这样的大佬才行,所以,此时通用一点方式就是通过短信发送一条活动链接,通过点击这条链接可以直接跳转到我们的APP。 实现效果: ...
  • 第4章 开车不发短信\ 第5章 瓢虫快跑\ 第6章 巴黎地图旅游\ 第7章 安卓,我的车在哪?\ 第8章 总统测验\ 第9章 木琴\ 第10章 出题及答题\ 第11章 广播中心\ 第12章 遥控机器人\ 第13章 亚马逊掌上书店\ 第14章 理解...
  • 目录项目概述系统总体架构项目文件结构图系统功能框图数据库设计表之间的联系各表设计详解数据库脚本用例设计源码 ...如,上传App及版本信息App发布和维护、App搜索、个人信息修改等。 后台管理系统:负责后台数...
  • 我现在back键返回到桌面了 请问怎么才能回到发短信前的activity 谢谢
  • 用python 调用whatsapp自动消息

    千次阅读 2019-10-14 21:37:27
    用python 调用whatsapp自动消息 ...whatsapp 开放了一条api可以用来给陌生人发信息的 “https://web.whatsapp.com/send?phone=”+电话号码(+8613421514574这样的格式) 这里放上需要导入的库 import pyautogui...
  • 或者点击网址链接邮件,点击发短信按钮直接发短信等,这些功能虽小,但很实用。 一、拨打电话功能: 通过app拨打电话有三种方式,具体代码如下所示: 1.直接跳转到拨打电话界面,不弹出拨打电话提示框,打完电话...
  • APP短信验证码如何验证?

    千次阅读 2018-09-13 17:14:31
    后台生成验证码,发送短信,并返回md5加密后的验证码到前端–&gt;用户输入验证码,md5加密与后台返回的md5加密验证码比较,校验。 优点:简单,便捷 缺点:用户刷新即失效,存到cookie中,也依然有丢失的风险...
  • 写这篇文章,也是缘于运营的一个需求:在 App 运营过程中,会有大量的推广短信,里面附有链接,目的是引导用户参与活动。如果用户手机没有安装我们的 App 就引导其去下载页,如果用户已经安装了我们的 App 就直接在 ...
  • Android 短信链接唤起app

    千次阅读 2018-01-22 11:33:46
    ...例如,电商为用户发送优惠券之后经常会下发一条短信:某某优惠券已发送到您的账户中,点击 xxx 链接即可查看!此时当用户点击链接之后会直接打开本地APP,进入相关页面。 
  • uniapp开发APP之真机调试 HBuild X manifest.json 设置 下面会有实现代码,先看一下效果,点击微信登录就会跳转到微信去授权登录,可以拿到用户的唯一标识(openid,access_token,unionid),和头像,昵称等基础...
  • uni-app实战商城类app和小程序

    千人学习 2020-03-07 22:06:28
    课程概述 本季度为uni-app实战项目第2季度,将实战商城类app和小程序,其中会包括发布到安卓端app,iOS端app、微信小程序,另外还会涉及Weex(nvue),Vuex模块化管理,商城支付模块等。 课程大纲见以下图!

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,200,148
精华内容 480,059
关键字:

发短信的app