相关资料:

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)相关推荐

  1. android手机调用系统相册(兼容小米手机)

    在android项目中我们往往会选择照片 , 比较懒的方式肯定是直接调用系统相册, 当然你也可以自己写一个相册读取 , 总结下我在项目中遇到的问题吧 , 目前是发现小米手机调用系统相册竟然弹出来一个选 ...

  2. 【android】调用系统app打开word文档遇到的问题

    app突然点击word文件下载后没反应,搞了半天居然是少了个"-"的问题,但是以前都没问题,突然就打不开了,网上也找不到答案: 原来的type是"application/ ...

  3. Android开发 调用系统相机相册图片功能,解决小米手机拍照或者图片横竖相反问题,及小米手机相册图片路径问题

    Android开发 调用系统相机相册图片功能,解决小米手机拍照或者图片横竖相反问题,及小米手机相册图片路径问题 1.调用相机,兼容7.0 AndroidManifest配置 <providera ...

  4. Java乔晓松-android中调用系统拍照功能并显示拍照的图片

    android中调用系统拍照功能并显示拍照的图片 如果你是拍照完,利用onActivityResult获取data数据,把data数据转换成Bitmap数据,这样获取到的图片,是拍照的照片的缩略图 代 ...

  5. 随笔记录2、Android端调用系统分享文件记录

    Android端调用系统发送文件 效果如如下: Android 7.0以上需要适配 第一步: 1. AndroidManifest.xml中注册.provider 2. android:resourc ...

  6. android订餐系统app、android购物商城系统app 手机端+服务器端 mysql数据库,界面简单,功能齐全 安卓购物商城 安卓在线订餐系统

    android订餐系统app.android购物商城系统app 一.简介 该项目可作为毕业设计开发使用,包含项目源代码.数据库.开题报告.毕业论文.答辩ppt等. 毕业设计题目:"基于And ...

  7. java 美发管理系统_基于安卓Android潮流美发系统APP设计(MySQL)

    基于安卓Android潮流美发系统APP设计(MySQL)(任务书,开题报告,中期检查表,文献综述,外文翻译,毕业论文16000字,程序代码,MySQL数据库) 本应用主要用于对手机上网用户,在线预约 ...

  8. 用Java做手机备忘录_基于安卓Android的备忘录系统APP的设计(Eclipse)

    基于安卓Android的备忘录系统APP的设计(Eclipse)(任务书,开题报告,论文13000字,程序代码) 摘要 随着移动互联网的高速发展,智能手机的使用已经普及.为了能让智能手机发挥更大的应用 ...

  9. php实现调用手机相册,Android实现调用系统相册和拍照的Demo示例

    本文讲述了Android实现调用系统相册和拍照的Demo示例.分享给大家供大家参考,具体如下: 最近我在群里看到有好几个人在交流说现在网上的一些Android调用系统相册和拍照的demo都有bug,有 ...

最新文章

  1. K8s简单yaml文件运行例子deployment
  2. 【赠书】如何掌握好自然语言处理中的预训练语言模型?你需要读这本书
  3. 深度学习中batch_size、epoch和iteration的含义
  4. 【Bash】实现指定目录下的文件编码转换,以原文件名保存
  5. 原生线程池这么强大,Tomcat 为何还需扩展线程池?
  6. Docker-CE 入门
  7. 单利计算与复利计算程序
  8. JavaScript 和 React,React用了大量语法糖,让JS编写更方便。
  9. 医院信息化建设(2)---医疗业务
  10. Python_learn_飞机大战
  11. ArcGIS API For JavaScript 利用GP服务生成等值线、等值面(一)之生成等值线
  12. 海康威视摄像头 rtsp 地址格式
  13. Dubbo入门基础与实例讲解(超详细)
  14. 色彩搭配 — 总结1
  15. Google play billing(Google play 内支付) 上篇
  16. python 简洁优雅的装饰数据类——dataclass(通过生成只有部分属性值的子类解决初始化时没有默认值必须传所有字段值的问题)
  17. Spring框架学习 思维导图
  18. kafka自采集监控
  19. js创建一个指定长度的数组
  20. 天线接收功率计算公式_天线增益的计算公式

热门文章

  1. httpd(一)--基础、认证
  2. 关于cocos2d的下载和安装
  3. 写作预报之Hyper-V Server的图形化管理系统配置!
  4. Xamarin XAML语言教程模板视图TemplatedView(一)
  5. Highmaps网页图表教程之下载Highmaps与Highmaps的地图类型
  6. php页面是什么原因,PHP空白页面常见原因及解决方法
  7. matlab gui优化,matlabgui优化程序
  8. java轮盘赌_java人工蜂群算法求解TSP问题
  9. markdown 图片居中_Markdown常用语法汇总
  10. java 事件cancel_ACTION_CANCEL事件和事件回传