Android实例-调用系统APP(XE10+小米2)
相关资料:
1.群号383675978
2.http://blog.sina.com.cn/s/blog_44fa172f0101rmjt.html
3.PS:ListView1.ItemAppearanceObjects.ItemObjects.Text.Font.Size:=20; 设置字体大小,属性面板也可以设置。代码设置时需要看一下手机支持的大小是多少。
实例源码:
1 unit Unit1; 2 3 interface 4 5 uses 6 System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, 7 FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, 8 FMX.Controls.Presentation, FMX.Edit, 9 Androidapi.JNI.JavaTypes,//JString使用 10 Androidapi.JNI.GraphicsContentViewText,//JIntent使用 11 FMX.Surfaces,//TBitmapSurface使用 12 Androidapi.Helpers,//SharedActivity使用 13 System.IOUtils,//TPath使用 14 Androidapi.JNIBridge,//ILocalObject使用 15 FMX.Helpers.Android,//JBitmapToSurface使用 16 System.Generics.Collections,//TList使用 17 FMX.ListView.Types, FMX.ListView.Appearances, 18 FMX.ListView.Adapters.Base, FMX.ListView, FMX.StdCtrls, FMX.ScrollBox, 19 FMX.Memo; 20 21 type 22 TForm1 = class(TForm) 23 Edit1: TEdit; 24 ListView1: TListView; 25 Button1: TButton; 26 Memo1: TMemo; 27 procedure Edit1Change(Sender: TObject); 28 procedure Edit1Typing(Sender: TObject); 29 procedure Button1Click(Sender: TObject); 30 procedure FormCreate(Sender: TObject); 31 procedure ListView1ItemClick(const Sender: TObject; 32 const AItem: TListViewItem); 33 private 34 { Private declarations } 35 MainList : TList<JActivityInfo>; 36 dictAppIcons : TDictionary<Integer, TBitmap>; 37 //过虑方法 38 procedure FilterListView(AListView: TListView; AFilterName: string); 39 //打开APP方法 40 procedure OpenApp(PackageName, AppName : JString); 41 //获取安装的APP 42 function GetActivityAppList: JList; 43 function GetOrSetCashAppIcon(appInfo: JApplicationInfo): TBitmap; 44 procedure LoadActivityInfoList(var List: TList<JActivityInfo>); 45 procedure LoadDictonaryAppIcons(index: Integer; appInfo: JApplicationInfo; 46 var dictonaryAppIcons: TDictionary<Integer, TBitmap>); 47 procedure LoadListView(listView: TListView; AppList: TList<JActivityInfo>; 48 dictonaryAppIcons: TDictionary<Integer, TBitmap>); 49 procedure LoadListViewBitmap(listView: TListView; AppList: TList<JActivityInfo>; 50 var dictonaryAppIcons: TDictionary<Integer, TBitmap>); 51 public 52 { Public declarations } 53 end; 54 55 const 56 DEFAUT_INDEX: Integer = -1; 57 58 var 59 Form1: TForm1; 60 61 implementation 62 63 {$R *.fmx} 64 {$R *.NmXhdpiPh.fmx ANDROID} 65 66 { TForm1 } 67 //调用打开APP 68 procedure TForm1.Button1Click(Sender: TObject); 69 begin 70 OpenApp(StringToJString('com.androidillusion.videocamillusionpro'), 71 StringToJString('com.androidillusion.videocamillusionpro.VideoillusionActivity')); 72 end; 73 74 //改变事件 75 procedure TForm1.Edit1Change(Sender: TObject); 76 begin 77 if Edit1.Text = '' then 78 FilterListView(Self.ListView1, Edit1.Text.Trim); 79 end; 80 81 //输入事件 82 procedure TForm1.Edit1Typing(Sender: TObject); 83 begin 84 FilterListView(Self.ListView1, Edit1.Text.Trim); 85 end; 86 87 //过虑方法 88 procedure TForm1.FilterListView(AListView: TListView; AFilterName: string); 89 var 90 i: integer; 91 item: TListViewItem; 92 lower: string; 93 begin 94 if not Assigned(AListView) then 95 Exit; 96 lower := AFilterName.ToLower.Trim; 97 if lower.IsEmpty then 98 begin 99 if Assigned(AListView.Items.Filter) then 100 AListView.Items.Filter := nil; 101 end 102 else 103 begin 104 AListView.ItemIndex := DEFAUT_INDEX; 105 AListView.Items.Filter := 106 function(sFilter: string): Boolean 107 begin 108 Result := (lower.IsEmpty) or sFilter.ToLower.Contains(lower); 109 end; 110 end; 111 end; 112 113 procedure TForm1.FormCreate(Sender: TObject); 114 begin 115 LoadActivityInfoList(MainList); 116 LoadListView(Self.ListView1, MainList, self.dictAppIcons); 117 LoadListViewBitmap(Self.ListView1, MainList, self.dictAppIcons); 118 end; 119 120 //获取安装的APP 121 function TForm1.GetActivityAppList: JList; 122 var 123 tempList: JList; 124 Intent: JIntent; 125 Manager: JPackageManager; 126 begin 127 Intent := TJIntent.Create; 128 Intent.SetAction(TJIntent.JavaClass.ACTION_MAIN); 129 Intent.AddCategory(TJIntent.JavaClass.CATEGORY_LAUNCHER); 130 Manager := SharedActivity.GetPackageManager; 131 tempList := nil; 132 tempList := Manager.QueryIntentActivities(Intent, 0); 133 Result := tempList; 134 end; 135 136 function TForm1.GetOrSetCashAppIcon(appInfo: JApplicationInfo): TBitmap; 137 var 138 Drawable: JDrawable; 139 Bitmap: JBitmap; 140 itemBitmap: TBitmap; 141 Surface: TBitmapSurface; 142 saveDir: string; 143 pngFileName: string; 144 SaveParams: TBitmapCodecSaveParams; 145 begin 146 if not Assigned(appInfo) then 147 begin 148 Result := itemBitmap; 149 Exit; 150 end; 151 152 saveDir := TPath.GetCachePath; 153 pngFileName := saveDir + '/' + JStringToString(appInfo.packageName) + '.png'; 154 itemBitmap := TBitmap.Create; 155 if not TDirectory.Exists(saveDir, False) then 156 TDirectory.CreateDirectory(saveDir); 157 if TFile.Exists(pngFileName) then 158 itemBitmap.LoadFromFile(pngFileName) 159 else 160 begin 161 Drawable := appInfo.loadIcon(SharedActivity.getPackageManager); 162 Bitmap := TJBitmapDrawable.Wrap((Drawable as ILocalObject).GetObjectID).getBitmap; 163 Surface := TBitmapSurface.Create; 164 try 165 if JBitmapToSurface(Bitmap, Surface) then 166 begin 167 itemBitmap.Assign(Surface); 168 SaveParams.Quality := 100; 169 itemBitmap.SaveToFile(pngFileName, @SaveParams); 170 end; 171 finally 172 Surface.Free; 173 end; 174 end; 175 Result := itemBitmap; 176 end; 177 178 procedure TForm1.ListView1ItemClick(const Sender: TObject; 179 const AItem: TListViewItem); 180 begin 181 if not Assigned(MainList) then 182 Exit; 183 OpenApp(MainList.Items[AItem.Tag].applicationInfo.packageName, 184 MainList.Items[AItem.Tag].name); 185 Memo1.Lines.Add(JStringToString(MainList.Items[AItem.Tag].applicationInfo.packageName) + '/\' + JStringToString(MainList.Items[AItem.Tag].name)); 186 end; 187 188 procedure TForm1.LoadActivityInfoList(var List: TList<JActivityInfo>); 189 var 190 tempList: JList; 191 i: Integer; 192 ResolveInfo: JResolveInfo; 193 Info: JActivityInfo; 194 AppInfo: JApplicationInfo; 195 begin 196 if not Assigned(List) then 197 List := TList<JActivityInfo>.Create; 198 List.Clear; 199 tempList := Self.GetActivityAppList; 200 for i := 0 to tempList.size - 1 do 201 begin 202 ResolveInfo := TJResolveInfo.Wrap((tempList.get(i) as ILocalObject).GetObjectID); 203 Info := TJActivityInfo.Wrap((ResolveInfo.activityInfo as ILocalObject).GetObjectID); 204 AppInfo := TJApplicationInfo.Wrap((Info.applicationInfo as ILocalObject).GetObjectID); 205 List.Add(Info); 206 end; 207 end; 208 209 procedure TForm1.LoadDictonaryAppIcons(index: Integer; 210 appInfo: JApplicationInfo; 211 var dictonaryAppIcons: TDictionary<Integer, TBitmap>); 212 var 213 itemBitmap : TBitmap; 214 begin 215 if not Assigned(dictonaryAppIcons) then 216 dictonaryAppIcons := TDictionary<Integer, TBitmap>.Create; 217 if not dictonaryAppIcons.ContainsKey(index) then 218 begin 219 itemBitmap := GetOrSetCashAppIcon(appInfo); 220 dictonaryAppIcons.AddOrSetValue(index, itemBitmap); 221 end; 222 end; 223 224 procedure TForm1.LoadListView(listView: TListView; 225 AppList: TList<JActivityInfo>; 226 dictonaryAppIcons: TDictionary<Integer, TBitmap>); 227 var 228 tempItem : TListViewItem; 229 tempString, tempSubString, tempSubString2 : string; 230 i : integer; 231 begin 232 if (not Assigned(listView)) or (not Assigned(AppList)) then 233 Exit; 234 listView.Items.Clear; 235 listView.BeginUpdate; 236 for I := 0 to AppList.Count - 1 do 237 begin 238 tempString := JStringToString(AppList.Items[i].applicationInfo.loadLabel(SharedActivity.getPackageManager).toString); 239 tempItem := listView.Items.Add; 240 tempItem.Text := tempString; 241 tempItem.Tag := i; 242 end; 243 listView.EndUpdate; 244 end; 245 246 procedure TForm1.LoadListViewBitmap(listView: TListView; 247 AppList: TList<JActivityInfo>; 248 var dictonaryAppIcons: TDictionary<Integer, TBitmap>); 249 var 250 i: integer; 251 begin 252 if (not Assigned(listView)) or (not Assigned(AppList)) then 253 Exit; 254 listView.BeginUpdate; 255 for I := 0 to listView.ItemCount - 1 do 256 begin 257 listView.Items[i].BeginUpdate; 258 LoadDictonaryAppIcons(i, AppList.Items[listView.Items[i].Tag].applicationInfo, dictonaryAppIcons); 259 if Assigned(dictonaryAppIcons) and (dictonaryAppIcons.ContainsKey(i)) then 260 listView.Items[i].Bitmap := dictonaryAppIcons.Items[i]; 261 listView.Items[i].EndUpdate; 262 Application.ProcessMessages; 263 end; 264 listView.EndUpdate; 265 end; 266 267 //打开APP方法 268 procedure TForm1.OpenApp(PackageName, AppName: JString); 269 var 270 Intent : JIntent; 271 NativeComponent : JComponentName; 272 begin 273 Intent := TJIntent.Create; 274 Intent.setAction(TJIntent.JavaClass.ACTION_MAIN); 275 Intent.addCategory(TJIntent.JavaClass.CATEGORY_LAUNCHER); 276 NativeComponent := TJComponentName.JavaClass.init(PackageName, AppName); 277 Intent.addFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK or TJIntent.JavaClass.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); 278 Intent.setComponent(NativeComponent); 279 SharedActivity.startActivity(Intent); 280 end; 281 282 end.
转载于:https://www.cnblogs.com/FKdelphi/p/5413613.html
Android实例-调用系统APP(XE10+小米2)相关推荐
- android手机调用系统相册(兼容小米手机)
在android项目中我们往往会选择照片 , 比较懒的方式肯定是直接调用系统相册, 当然你也可以自己写一个相册读取 , 总结下我在项目中遇到的问题吧 , 目前是发现小米手机调用系统相册竟然弹出来一个选 ...
- 【android】调用系统app打开word文档遇到的问题
app突然点击word文件下载后没反应,搞了半天居然是少了个"-"的问题,但是以前都没问题,突然就打不开了,网上也找不到答案: 原来的type是"application/ ...
- Android开发 调用系统相机相册图片功能,解决小米手机拍照或者图片横竖相反问题,及小米手机相册图片路径问题
Android开发 调用系统相机相册图片功能,解决小米手机拍照或者图片横竖相反问题,及小米手机相册图片路径问题 1.调用相机,兼容7.0 AndroidManifest配置 <providera ...
- Java乔晓松-android中调用系统拍照功能并显示拍照的图片
android中调用系统拍照功能并显示拍照的图片 如果你是拍照完,利用onActivityResult获取data数据,把data数据转换成Bitmap数据,这样获取到的图片,是拍照的照片的缩略图 代 ...
- 随笔记录2、Android端调用系统分享文件记录
Android端调用系统发送文件 效果如如下: Android 7.0以上需要适配 第一步: 1. AndroidManifest.xml中注册.provider 2. android:resourc ...
- android订餐系统app、android购物商城系统app 手机端+服务器端 mysql数据库,界面简单,功能齐全 安卓购物商城 安卓在线订餐系统
android订餐系统app.android购物商城系统app 一.简介 该项目可作为毕业设计开发使用,包含项目源代码.数据库.开题报告.毕业论文.答辩ppt等. 毕业设计题目:"基于And ...
- java 美发管理系统_基于安卓Android潮流美发系统APP设计(MySQL)
基于安卓Android潮流美发系统APP设计(MySQL)(任务书,开题报告,中期检查表,文献综述,外文翻译,毕业论文16000字,程序代码,MySQL数据库) 本应用主要用于对手机上网用户,在线预约 ...
- 用Java做手机备忘录_基于安卓Android的备忘录系统APP的设计(Eclipse)
基于安卓Android的备忘录系统APP的设计(Eclipse)(任务书,开题报告,论文13000字,程序代码) 摘要 随着移动互联网的高速发展,智能手机的使用已经普及.为了能让智能手机发挥更大的应用 ...
- php实现调用手机相册,Android实现调用系统相册和拍照的Demo示例
本文讲述了Android实现调用系统相册和拍照的Demo示例.分享给大家供大家参考,具体如下: 最近我在群里看到有好几个人在交流说现在网上的一些Android调用系统相册和拍照的demo都有bug,有 ...
最新文章
- K8s简单yaml文件运行例子deployment
- 【赠书】如何掌握好自然语言处理中的预训练语言模型?你需要读这本书
- 深度学习中batch_size、epoch和iteration的含义
- 【Bash】实现指定目录下的文件编码转换,以原文件名保存
- 原生线程池这么强大,Tomcat 为何还需扩展线程池?
- Docker-CE 入门
- 单利计算与复利计算程序
- JavaScript 和 React,React用了大量语法糖,让JS编写更方便。
- 医院信息化建设(2)---医疗业务
- Python_learn_飞机大战
- ArcGIS API For JavaScript 利用GP服务生成等值线、等值面(一)之生成等值线
- 海康威视摄像头 rtsp 地址格式
- Dubbo入门基础与实例讲解(超详细)
- 色彩搭配 — 总结1
- Google play billing(Google play 内支付) 上篇
- python 简洁优雅的装饰数据类——dataclass(通过生成只有部分属性值的子类解决初始化时没有默认值必须传所有字段值的问题)
- Spring框架学习 思维导图
- kafka自采集监控
- js创建一个指定长度的数组
- 天线接收功率计算公式_天线增益的计算公式
热门文章
- httpd(一)--基础、认证
- 关于cocos2d的下载和安装
- 写作预报之Hyper-V Server的图形化管理系统配置!
- Xamarin XAML语言教程模板视图TemplatedView(一)
- Highmaps网页图表教程之下载Highmaps与Highmaps的地图类型
- php页面是什么原因,PHP空白页面常见原因及解决方法
- matlab gui优化,matlabgui优化程序
- java轮盘赌_java人工蜂群算法求解TSP问题
- markdown 图片居中_Markdown常用语法汇总
- java 事件cancel_ACTION_CANCEL事件和事件回传