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,大家好,今天给大家分享一个<网上手机销售系统>.本系统一共分为前台和后台两大模块,两个模块之间虽然在表面上是相互独立的,但是在对数据库的访问上是紧密相连的,各个模块访问的是 ...
随机推荐
- 笔记59 Spring+Hibernate整合(二)
一.项目结构 二.创建表 数据库中只有一张表,stock,三个字段:stock_id.stock_code和stock_name. CREATE TABLE `stock` ( `STOCK_ID` ...
- Oracle数据库中文乱码问题解决
1.查看服务器端编码select userenv('language') from dual;我实际查到的结果为:AMERICAN_AMERICA.ZHS16GBK 2.执行语句 select * f ...
- Ubuntu图形界面和终端界面切换快捷键
Ctrl+Alt+F1可以从图形界面切换到终端界面. Ctrl+Alt+F7可以从终端界面退出来,重新回到图形界面
- 【leetcode】133. Clone Graph
题目如下: Given the head of a graph, return a deep copy (clone) of the graph. Each node in the graph con ...
- Ecshop商品浏览历史样式修改方法
想要修改ECSHOP的浏览历史样式,发现 history.lbi 中不能修改. 需要修改的文件:includes\lib_insert.php,找到函数:function insert_history ...
- magento结构解析
Magento 模块 模块( module )是 Magento 的核心.站点上的任何一个动作( action ),无论是在前台和还是在后台的每一个操作都是通过模块来实现的.模块是可以视为一个容器,它 ...
- ruby中数组认识
a = 1...5这样赋值,a不是数组类型,1...5操作是一种枚举类型. a = ["1","2","3","4"], ...
- [NOIP模拟测试7]visit 题解(组合数学+CRT+Lucas定理)
Orz 因为有T的限制,所以不难搞出来一个$O(T^3)$的暴力dp 但我没试 据说有30分? 正解的话显然是组合数学啦 首先$n,m$可能为负,但这并没有影响, 我们可以都把它搞成正的 即都看作向右 ...
- java基础集合底层介绍
ArrayList.Vector.HashMap.HashTable.HashSet的默认初始容量.加载因子.扩容增量 这里要讨论这些常用的默认初始容量和扩容的原因是: 当底层实现涉及到扩容时,容器或 ...
- mybatis 丢失字段
实体上,如果没写get,记得加上 @Data