DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: cuiqingbo
今日帖子: 25
在线用户: 10
导航: 论坛 -> 网络通讯 斑竹:liumazi,sephil  
作者:
女 zhaohuayun (zhaohuayun) ▲▲▲▲△ -
普通会员
2015/10/22 21:28:22
标题:
求助,delphi xe5以后版本可以监听android系统来电吗? 浏览:2801
加入我的收藏
楼主: 如题,希望高手给个例子看看
----------------------------------------------
-
作者:
男 jiuk (愛像一陣風) ★☆☆☆☆ -
普通会员
2015/10/25 8:59:17
1楼: 可以
----------------------------------------------
Delphi业余爱好者
作者:
男 jiuk (愛像一陣風) ★☆☆☆☆ -
普通会员
2015/10/25 9:00:39
2楼: unit UnitMainScreen;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
  FMX.Controls.Presentation, FMX.StdCtrls,BroadcastReceiver
  {$IFDEF ANDROID}
  ,Androidapi.JNI.GraphicsContentViewText
  ,Androidapi.Helpers
  ,Androidapi.JNI.Telephony
  ,Androidapi.JNI.JavaTypes
  ,Androidapi.JNIBridge

  ,Androidapi.JNI.Os
  {$ENDIF}
  ,MainUnit;

type
  TMainScreen = class(TForm)
    ToolBar1: TToolBar;
    ToolBar2: TToolBar;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    StyleBook1: TStyleBook;
    procedure BroadcastReceiverReceive(Context: JContext; Intent: JIntent);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
    BroadcastReceiver:TBroadcastReceiver;
  public
    { Public declarations }
  end;

var
  MainScreen: TMainScreen;

implementation

uses ToastAndroid;

{$R *.fmx}

procedure TMainScreen.BroadcastReceiverReceive(Context: JContext;
  Intent: JIntent);
{$IFDEF ANDROID}
var
  telephonyManager: JTelephonyManager;
  obj: JObject;
  Temp: String;
  list: JPhoneStateListener;
  Iintent:JIntent;
begin
  if not BroadcastReceiver.HasPermission('android.permission.READ_PHONE_STATE') then
  begin
    ShowMessage('You don''t have permission for Read Phone State!');
    Exit;
  end;

  Obj := SharedActivityContext.getSystemService(TJContext.JavaClass.TELEPHONY_SERVICE);
  telephonyManager := TJTelephonyManager.Wrap( (obj as ILocalObject).GetObjectID );
 // telephonyManager.listen();

  Temp := JStringToString(intent.getStringExtra(StringToJString('incoming_number')));
  if Temp.Length > 0 then
    Toast('In coming call number: '+Temp,TToastLength.ShortToast)
      if Temp = '1371510xxxx' then


  else
    Toast('No Number..',TToastLength.ShortToast);
{$ELSE}
begin
{$ENDIF}
end;

procedure TMainScreen.Button1Click(Sender: TObject);
begin
  BroadcastReceiver:= TBroadcastReceiver.Create(self);
  BroadcastReceiver.onReceive:=BroadcastReceiverReceive;
  BroadcastReceiver.RegisterReceive;
end;

procedure TMainScreen.Button2Click(Sender: TObject);
begin
  BroadcastReceiver.Add('android.intent.action.PHONE_STATE');
end;

procedure TMainScreen.Button3Click(Sender: TObject);
begin
  BroadcastReceiver.SendBroadcast('android.intent.action.PHONE_STATE')
end;

procedure TMainScreen.Button4Click(Sender: TObject);
begin
  Close;
end;

end.
----------------------------------------------
Delphi业余爱好者
作者:
男 gxxuej (kk) ▲▲▲▲▲ -
普通会员
2016/1/26 17:04:11
3楼:  这段代码一切OK,但把这些代码放在在Serivces中,编译安装通过,但始终没有反应,监听不到来电,不知问题在哪?请问各位高手:在seattle Android Serivces中实现receiver有什么特别的要求吗?能否给一个在Android Serivces 中检测电话状态的Demo?
----------------------------------------------
-
作者:
男 ww1000 (Delphis) ▲▲▲▲▲ -
普通会员
2016/2/17 13:07:42
4楼: d
----------------------------------------------
阳光总在
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行70.3125毫秒 RSS