delphi xe10 手机内部系统相关操作(手机信息、震动、剪贴板、键盘、电话、拨号)
- //获取手机信息
- function GetPhoneInfo(): string;
- Var
- TelephonyManager: JTelephonyManager;
- TelephonyServiceNative: JObject;
- begin
- result := '';
- TelephonyServiceNative := SharedActivityContext.getSystemService
- (TJContext.JavaClass.TELEPHONY_SERVICE);
- if Assigned(TelephonyServiceNative) then
- TelephonyManager := TJTelephonyManager.Wrap
- ((TelephonyServiceNative as ILocalObject).GetObjectID);
- result := JStringToString(TelephonyManager.getLine1Number);//取得手机号
- //TelephonyManager.getDeviceId 取IMEI
- //TelephonyManager.getLine1Number 取MSISDN 手机号,大部分SIM卡中不会写入这个信息
- //TelephonyManager.getSimSerialNumber 取ICCID
- //TelephonyManager.getSubscriberId 取IMSI 运营商实际上是用这个查询的
- end;
- //手机振动
- uses FMX.Helpers.Android, Androidapi.JNI.App, Androidapi.JNI.Os, Androidapi.JNIBridge, FMX.StdCtrls;
- procedure TForm1.Button2Click(Sender: TObject);
- function GetVibratorArray(const AintArr:array of int64):TJavaArray<int64>;//震动规律函数
- var
- Lindex:integer;
- begin
- Result:=TJavaArray<int64>.Create(Length(AintArr));
- for Lindex:=Low(AintArr) to High(AintArr) do
- Result.Items [Lindex]:= AintArr[Lindex];
- end;
- var
- LVibrator:JVibrator;
- LJavaArray:TJavaArray<int64>;
- begin
- LVibrator:=TJVibrator.Wrap((SharedActivity.getSystemService(TJActivity.javaClass.VIBRATOR_SERVICE ) as iLocalObject).GetObjectID );//引用震动
- if not LVibrator.hasVibrator then
- begin
- showmessage('手机不支持震动');
- exit;
- end;
- LVibrator.vibrate();//震动200ms
- LVibrator.cancel ;//立刻停止震动
- LJavaArray:=GetVibratorArray([,,,]);//调用震动规律
- LVibrator.vibrate(LJavaArray,-);//不重复, 震动一 次
- LJavaArray:=GetVibratorArray([,,,]);//调用震动规律
- LVibrator.vibrate(LJavaArray,);//v不停重复,大于0的参数,可以指定震动次数
- end;
- //剪贴版FClipboardService: IFMXClipboardService;
- TPlatformServices.Current.SupportsPlatformService(IFMXClipboardService, IInterface(FClipboardService));
- FClipboardService.SetClipboard(Tvalue(Edit1.Text)); //复制
- FClipboardService.GetClipboard.ToString; //粘贴
- //键盘FService: IFMXVirtualKeyboardToolbarService;
- if TPlatformServices.Current.SupportsPlatformService (IFMXVirtualKeyboardToolbarService, IInterface(FService)) then
- begin
- FService.SetToolbarEnabled(true);
- FService.SetHideKeyboardButtonVisibility(true);
- end;
- //电话信息(Call拨号)
- PhoneDialerService: IFMXPhoneDialerService;
- //获取电话服务信息
- procedure TPhoneDialerForm.btnGetCarrierInfoClick(Sender: TObject);
- var
- PhoneDialerService: IFMXPhoneDialerService;
- begin
- { test whether the PhoneDialer services are supported }
- if TPlatformServices.Current.SupportsPlatformService(IFMXPhoneDialerService, IInterface(PhoneDialerService)) then
- begin
- { if yes, then update the labels with the retrieved information }
- CarrierNameItem.ItemData.Detail := PhoneDialerService.GetCarrier.GetCarrierName;
- CountryCodeItem.ItemData.Detail := PhoneDialerService.GetCarrier.GetIsoCountryCode;
- NetworkCodeItem.ItemData.Detail := PhoneDialerService.GetCarrier.GetMobileCountryCode;
- MobileNetworkItem.ItemData.Detail := PhoneDialerService.GetCarrier.GetMobileNetwork;
- end
- else
- ShowMessage('PhoneDialer service not supported');
- end;
- //拨号
- procedure TPhoneDialerForm.btnMakeCallClick(Sender: TObject);
- var
- PhoneDialerService: IFMXPhoneDialerService;
- begin
- { test whether the PhoneDialer services are supported }
- if TPlatformServices.Current.SupportsPlatformService(IFMXPhoneDialerService, IInterface(PhoneDialerService)) then
- begin
- { if the Telephone Number is entered in the edit box then make the call, else
- display an error message }
- if edtTelephoneNumber.Text <> '' then
- PhoneDialerService.Call(edtTelephoneNumber.Text)
- else
- begin
- ShowMessage('Please type in a telephone number.');
- edtTelephoneNumber.SetFocus;
- end;
- end
- else
- ShowMessage('PhoneDialer service not supported');
- end;
- Intent :TJIntent
- uses
- Androidapi.JNI.GraphicsContentViewText, FMX.Helpers.Android, Androidapi.JNI.Net, Androidapi.Helpers;
- procedureCall_URI(constAAction : JString;constAURI: string);
- var
- uri: Jnet_Uri;
- Intent: JIntent;
- begin
- uri := StrToJURI(AURI);
- Intent := TJIntent.JavaClass.init(AAction, uri);
- {Intent.putExtra()
- //短信
- Call_URI(TJIntent.JavaClass.ACTION_SENDTO, 'smsto:137114553XX');
- Intent.putExtra(StringToJString('sms_body'), StringToJString('测试短信'));
- 如果是要发短信等复杂的应用,需要传递各种其他的参数.要用到Intent.putExtra()传递多个参数.
- 这里只封装最简单的,具体Intent.putExtra()的用法,可以查询Java的资料.大把的
- }
- SharedActivityContext.startActivity(Intent);
- end;
- //使用例子:
- //打电话
- Call_URI(TJIntent.JavaClass.ACTION_CALL, 'tel:137114553XX');
- //打开地图显示某个坐标点
- Call_URI(TJIntent.JavaClass.ACTION_VIEW, 'geo:38.899533,-77.036476');
- //打开网页
- Call_URI(TJIntent.JavaClass.ACTION_VIEW, 'www.baidu.com');
- //发送电子邮件
- Call_URI(TJIntent.JavaClass.ACTION_SENDTO, 'mailto:wr960204@126.com');
- //播放音乐
- Call_URI(TJIntent.JavaClass.ACTION_VIEW, 'file:///sdcard/download/最炫民族风.mp3');
delphi xe10 手机内部系统相关操作(手机信息、震动、剪贴板、键盘、电话、拨号)的更多相关文章
- python 系统相关操作
1.文件 open()代开文件或者创建文件 fout=open('oops.txt','wt') print('Oops, I created a file.',file=fout) fout.clo ...
- linux c编程:系统数据文件和信息
linux系统相关的文件信息包含在/etc/passwd文件和/etc/group中.每次登录linux系统以及每次执行ls -l命令时都要使用口令文件.这些字段都包含在<pwd.h>中定 ...
- atitit.短信 验证码 破解 v3 p34 识别 绕过 系统方案规划----业务相关方案 手机验证码 .doc
atitit.短信 验证码 破解 v3 p34 识别 绕过 系统方案规划----业务相关方案 手机验证码 .doc 1. 手机短信验证码 vs 图片验证码 安全性(破解成本)确实要高一些1 1 ...
- (转载)Mac系统下利用ADB命令连接android手机并进行文件操作
Mac系统下利用ADB命令连接android手机并进行文件操作 标签: Mac adb android 2016-03-14 10:09 5470人阅读 评论(1) 收藏 举报 分类: Androi ...
- 手机缺失sqlite3时操作数据库的多种解决方案 ----adb命令科普
在Android应用开发无处不在SQLite数据库的身影.那么在开发中怎么使用adb命令操作数据库的功能呢? 下面我们将完整的介绍与数据库操作相关的命令集及当手机缺少sqlite3的时候的多种解决方案 ...
- adb命令具体解释(二)——手机缺失sqlite3时操作数据库的多种解决方式
在android应用开发无处不在SQLite数据库的身影.那么在开发中怎么使用adb命令操作数据库的功能呢? 以下我们将完整的介绍与数据库操作相关的命令集及当手机缺少sqlite3的时候的多种解决方式 ...
- 升鲜宝V2.0_杭州生鲜配送行业,升鲜宝供应链手机分拣系统使用说明_升鲜宝生鲜供应链管理系统_15382353715_余东升
1. 系统概述 升鲜宝供应链手机分拣系统(Android版)是升鲜宝供应链管理系统的配套分拣系统,本系统适用于农副产品生鲜配送供应链企业分拣过程,在线上数据管理和线下业务管理两大方面提供解决方案,该系 ...
- adb软件国产安卓手机对系统的把控
国产安卓手机对系统的把控,现在想搞机的方法是愈来愈麻烦,华为最先的申请解锁码,到现在直接系统锁死不给解.让我等搞机小伙伴是望机兴叹.安卓手机的通病随着系统升级,手机就越来越卡.本想通过卸载系统自带应用 ...
- Struts+Servlet+JDBC网上手机销售系统
项目描述 Hi,大家好,今天给大家分享一个<网上手机销售系统>.本系统一共分为前台和后台两大模块,两个模块之间虽然在表面上是相互独立的,但是在对数据库的访问上是紧密相连的,各个模块访问的是 ...
随机推荐
- 在Feign中添加自定义配置
首先先创建一个FeignConfig类,代码如下: package com.xing.config; import org.springframework.context.annotation.Bea ...
- JMeter 并发压力测试
一,下载JMeter http://jmeter.apache.org/download_jmeter.cgi 二,创建默认配置 可以不用配置相同参数. 测试计划:右键添加线程组 线程组:右键添加 ...
- js-打印九九乘法表
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Tomcat---概述
1.Tomcat 是 一个 免费.开源 的 web应用服务器: 属于 轻量级 应用服务器,在中小型系统.并发量不大的情况下 被广泛使用: 2.Tomcat 是 Apache下的核心项目 ...
- macOS添加字体
打开macOS的Applications文件夹: 双击其中的Font Book: 把下载的字体解压后的_文件夹_ 拖进来,字体就安装好了.
- React 组件间传值
壹 .了解React传值的数据 一. 创建组件的方法 一 . 1 通过function声明的组件特点是: 1)function创建的组件是没有state属性,而state属性决定它是不是有生命周期 ...
- Android中父View和子view的点击事件的执行过程
Android中的事件类型分为按键事件和屏幕触摸事件,Touch事件是屏幕触摸事件的基础事件,有必要对它进行深入的了解. 一个最简单的屏幕触摸动作触发了一系列Touch事件:ACTION_DOWN- ...
- move_base 分层代价地图的作用(翻译)
A. 标准层 Static Map Layer:为了做全局规划,机器人需要一个超越其传感器的地图,以了解墙壁和其他静态障碍物的位置. 静态地图可以先用SLAM算法生成,也可以从架构图中创建. 当层 ...
- python安装 cvxpy 巨坑,一堆C++错误
https://www.lfd.uci.edu/~gohlke/pythonlibs/#ecos 下载scs,ecos,cvxpy的whl,一个个安装即可 之前被一堆C++错误搞晕了2小时
- Dubbo入门到精通学习笔记(一):Dubbo对传统工程进行改造、注册中心安装(Zookeeper-3.4.6)、工程结构优化
文章目录 改造思路 样例工程:传统的单工程项目(edu-demo) 模型结构 思路 改成dubbo调用方式后的工程结构 部署环境规划 改造 愚公移山 迁移包 迁移页面: 迁移配置相关 新项目的主要作用 ...