手机路径、Windows路径知识及delphiXE跨设备APP自动下载和升级

手机路径、Windows路径知识

及delphiXE跨设备APP自动下载和升级

一、APP安装程序文件版本和权限信息

1、运行时动态调用Android apk的AndroidManifest.xml获取versionName

2、运行时动态调用IOS ipa的info.plist获取CFBundleVersion

(和entitlements)

uses iOSapi.Foundation;

NSBundle = interface; //:包接口

NSDictionary = interface; //:目录接口

NSFileManager = interface; //:文件管理员接口

NSFileVersion = interface; //:文件版本接口

二、TPath手机和电脑的存取路径

(一)、WINDOWS电脑设备

TPath.GetDirectoryName(Filename)参数MSWINDOWS存取位置:C:\Users\Administrator\AppData\Local

TPath.GetExtension(Filename)参数MSWINDOWS存取位置:.pdf

TPath.GetFileName(Filename)参数MSWINDOWS存取位置:NO.XSKD20150304048.pdf

TPath.GetFileNameWithoutExtension(Filename)参数MSWINDOWS存取位置:NO.XSKD20150304048

TPath.GetFullPath(TPath.GetDownloadsPath)参数MSWINDOWS存取位置:C:\Users\Administrator\AppData\Local

TPath.GetPathRoot(TPath.GetDownloadsPath)参数MSWINDOWS存取位置:C:\

TPath.GetRandomFileName参数MSWINDOWS存取位置:37CdIVK5.88J

TPath.GetTempFileName参数MSWINDOWS存取位置:C:\Users\Administrator\AppData\Local\Temp\tmpBF5B.tmp
TPath.GetTempPath参数MSWINDOWS存取位置: C:\Users\Administrator\AppData\Local\Temp\
TPath.GetHomePath参数MSWINDOWS存取位置: C:\Users\Administrator\AppData\Roaming

TPath.GetDocumentsPath参数MSWINDOWS存取位置:C:\Users\Administrator\Documents

TPath.GetSharedDocumentsPath参数MSWINDOWS存取位置:C:\Users\Public\Documents

TPath.GetLibraryPath参数MSWINDOWS存取位置:D:\Http上传下载\IdHttp下载文件断点续传\Win64\Debug\

TPath.GetCachePath参数MSWINDOWS存取位置:C:\Users\Administrator\AppData\Local

TPath.GetPublicPath参数MSWINDOWS存取位置:C:\ProgramData

TPath.GetPicturesPath参数MSWINDOWS存取位置:C:\Users\Administrator\Pictures

TPath.GetSharedPicturesPath参数MSWINDOWS存取位置:C:\Users\Public\Pictures

TPath.GetCameraPath参数MSWINDOWS存取位置:C:\Users\Administrator\Pictures

TPath.GetSharedCameraPath参数MSWINDOWS存取位置:C:\Users\Public\Pictures

TPath.GetMusicPath参数MSWINDOWS存取位置:C:\Users\Administrator\Music

TPath.GetSharedMusicPath参数MSWINDOWS存取位置:C:\Users\Public\Music

TPath.GetMoviesPath参数MSWINDOWS存取位置:C:\Users\Administrator\Videos

TPath.GetSharedMoviesPath参数MSWINDOWS存取位置:C:\Users\Public\Videos

TPath.GetAlarmsPath参数MSWINDOWS存取位置:C:\Users\Administrator\Music

TPath.GetSharedAlarmsPath参数MSWINDOWS存取位置:C:\Users\Public\Music

TPath.GetDownloadsPath参数MSWINDOWS存取位置:C:\Users\Administrator\AppData\Local

TPath.GetSharedDownloadsPath参数MSWINDOWS存取位置:C:\ProgramData

TPath.GetRingtonesPath参数MSWINDOWS存取位置:C:\Users\Administrator\Music

TPath.GetSharedRingtonesPath参数MSWINDOWS存取位置:C:\Users\Public\Music

TPath.GetRingtonesPath参数MSWINDOWS存取位置:C:\Users\Administrator\Music

(二)、Android手机、平板、安卓笔记本等设备

概念:

/storage/emulated/0/ :安卓指"内部存储" :可以在安卓的存取权限设置并获取后,进行读写

/storage/emulated/1/ :安卓指SDCard("SD卡"):可以在安卓的存取权限设置并获取后,进行读写

//:::以下对上述规则均适用:::

//1、你的APP的包全路径名:比如:com.pulledup.mainPro ,你的APP的包名:mainPro,即package

//: 包(即应用程序Apk)存取路径: **/data/user/0/**包全路径名/

//: 包(即应用程序Apk)的xml配置文件存取路径: /内部存储/Addroid/data/包全路径名/files

App路径:/data/user/0/com. pulledup.mainPro**/ //:并非你的App运行时对外存取路径**,不可见:

伴随应用打包时就一起分发文件出去供所有用户user都可以在APP中读取这些文件的APP的内部路径,不可见:即.\assets\internal\ ,即TPath.GetHomePath参数Android存取位置: /data/user/0/com.embarcadero.MainPro/files ,这个路径下的文件:它是emulated //:仿真的 :获得权限后可读但不可写,除非 你将文件在代码开发阶段,就伴随应用Deployment将其分发到**.** \assets\internal后,才能对该文件可读可写,而无需任何权限(包括存储权限)。

安卓路径由TJStorageManager进行管理:为以上的JNI析构后拼接路径:仿真路径,和Windows不一个概念!

//1.1、存取位置GetSharedDownloadsPath参数:(获取共享下载路径:获得权限后可读可写

//: /内部存储/Download/NO.XSKD20150304048.pdf

//1.2、存取位置GetDownloadsPath参数:(获取应用程序的文件下载路径:获得权限后可读可写

//: /内部存储/Addroid/data/包全路径名/files/Download/NO.XSKD20150304048.pdf

TPath.GetDirectoryName(Filename)参数Android存取位置:/storage/emulated/0/Android/data/com.embarcadero.MainPro/files/Download

TPath.GetExtension(Filename)参数Android存取位置:.pdf

TPath.GetFileName(Filename)参数Android存取位置:NO.XSKD20150304048.pdf

TPath.GetFileNameWithoutExtension(Filename)参数Android存取位置:NO.XSKD20150304048

TPath.GetFullPath(TPath.GetDownloadsPath)参数Android存取位置:/storage/emulated/0/Android/data/com.embarcadero.MainPro/files/Download

TPath.GetPathRoot(TPath.GetDownloadsPath)参数Android存取位置:/

TPath.GetRandomFileName参数Android存取位置:hS1s1veL.GN3

TPath.GetTempFileName参数Android存取位置:/storage/emulated/0/Android/data/com.embarcadero.MainPro/files/tmp/tmp.szyus65J6O
TPath.GetTempPath参数Android存取位置: /storage/emulated/0/Android/data/com.embarcadero.MainPro/files/tmp :获得权限后可读可写

TPath.GetLibraryPath参数Android存取位置:/data/app/com.embarcadero.MainPro-1/lib/arm :获得权限后可读但不可写

TPath.GetCachePath参数Android存取位置:/data/user/0/com.embarcadero.MainPro/cache :获得权限后可读但不可写

TPath.GetHomePath参数Android存取位置: /data/user/0/com.embarcadero.MainPro/files //:伴随应用打包时就一起分发文件出去供所有用户user都可以在APP中读取这些文件的APP的内部路径,不可见:即.\assets\internal。TPath.GetHomePath参数Android存取位置: /data/user/0/com.embarcadero.MainPro/files ,这个路径下的文件:它是emulated //:仿真的 :可读可写路径,除非 你将文件在代码开发阶段,就伴随应用Deployment将其分发到**.** \assets\internal后,才能对该文件可读可写,而无需任何权限(包括存储权限):

TPath.GetDocumentsPath 参数Android存取位置:/data/user/0/com.embarcadero.MainPro/files //:伴随应用打包时就一起分发文件出去供所有用户user都可以在APP中读取这些文件的APP的内部路径,不可见:即.\assets\internal。其权限特征和GetHomePath类似:

TPath.GetSharedDocumentsPath参数Android存取位置:/storage/emulated/0/Documents

获得权限后可读可写,并且持久,除非机主专业并使用手机助手删除或重置初始化手机,否则永远不会被删除

TPath.GetPublicPath 参数Android存取位置:/storage/emulated/0/Android/data/com.embarcadero.MainPro/files //:App的对外可见可存取的文件目录的公开路径

获得权限后可读可写,但其数据可被机主从【设置-应用管理-该应用-存储-删除数据】中清除路径/storage/emulated/0/Android/data/com.embarcadero.MainPro而使其中数据同时消失

TPath.GetPicturesPath参数Android存取位置:/storage/emulated/0/Android/data/com.embarcadero.MainPro/files/Pictures

TPath.GetSharedPicturesPath参数Android存取位置:/storage/emulated/0/Pictures

TPath.GetCameraPath参数Android存取位置:/storage/emulated/0/Android/data/com.embarcadero.MainPro/files/DCIM

获得权限后可读可写

TPath.GetSharedCameraPath参数Android存取位置:/storage/emulated/0/DCIM

获得权限后可读可写,以下均可读写:

TPath.GetMusicPath参数Android存取位置:/storage/emulated/0/Android/data/com.embarcadero.MainPro/files/Music

TPath.GetSharedMusicPath参数Android存取位置:/storage/emulated/0/Music

TPath.GetMoviesPath参数Android存取位置:/storage/emulated/0/Android/data/com.embarcadero.MainPro/files/Movies

TPath.GetSharedMoviesPath参数Android存取位置:/storage/emulated/0/Movies

TPath.GetAlarmsPath参数Android存取位置:/storage/emulated/0/Android/data/com.embarcadero.MainPro/files/Alarms

TPath.GetSharedAlarmsPath参数Android存取位置:/storage/emulated/0/Alarms

TPath.GetDownloadsPath参数Android存取位置:/storage/emulated/0/Android/data/com.embarcadero.MainPro/files/Download

TPath.GetSharedDownloadsPath参数Android存取位置:/storage/emulated/0/Download

TPath.GetRingtonesPath参数Android存取位置:/storage/emulated/0/Android/data/com.embarcadero.MainPro/files/Ringtones

TPath.GetSharedRingtonesPath参数Android存取位置:/storage/emulated/0/Ringtones

TPath.GetRingtonesPath参数Android存取位置:/storage/emulated/0/Android/data/com.embarcadero.MainPro/files/Ringtones

备注:用Android原生方法获取路径:uses Androidapi.IOUtils;:

// File Locations in Internal memory. (Accessible only to the program.

// Not accessible to anyone without rooting the Android system.)

// Files written here are deleted when uninstalling the application.)

function GetFilesDir: string;

function GetCacheDir: string;

function GetLibraryPath: string;

// File Locations in External memory. (Accessible only to the program, but easily

// readable mounting the external storage as a drive in a computer.

// Files written here are deleted when uninstalling the application.)

function GetExternalFilesDir: string;

function GetExternalCacheDir: string;

function GetExternalPicturesDir: string;

function GetExternalCameraDir: string;

/// <summary>Get documents from external storage</summary>

function GetExternalDocumentsDir: string;

function GetExternalDownloadsDir: string;

function GetExternalMoviesDir: string;

function GetExternalMusicDir: string;

function GetExternalAlarmsDir: string;

function GetExternalRingtonesDir: string;

// File Locations in External memory. (Accessible to all programs, easily

// readable mounting the external storage as a drive in a computer.

// Files written here are preserved when uninstalling the application.)

function GetSharedFilesDir: string;

function GetSharedPicturesDir: string;

function GetSharedCameraDir: string;

/// <summary>Get Shared documents from external storage</summary>

function GetSharedDocumentsDir: string;

function GetSharedDownloadsDir: string;

function GetSharedMoviesDir: string;

function GetSharedMusicDir: string;

function GetSharedAlarmsDir: string;

function GetSharedRingtonesDir: string;

(三)、IOS、IPad

苹果沙盒路径由TFileManager和TDirectoryManager进行管理:为各子NSURL析构后拼接路径:仿真路径,和Windows不一个概念!

TPath.GetDirectoryName(Filename)参数IOS存取位置:【IOS不能取出此路径!,但不会报错:难道是没有在AppStore中发布?】

TPath.GetExtension(Filename)参数IOS存取位置:.pdf

TPath.GetFileName(Filename)参数IOS存取位置:NO.XSKD20150304048.pdf

TPath.GetFileNameWithoutExtension(Filename)参数IOS存取位置:NO.XSKD20150304048

TPath.GetFullPath(Filename)参数IOS存取位置:/NO.XSKD20150304048.pdf

TPath.GetPathRoot(Filename)参数IOS存取位置:【IOS不能取出此路径!,但不会报错:难道是没有在AppStore中发布?】

TPath.GetRandomFileName参数IOS存取位置:q94333cY.9Y3

TPath.GetTempFileName参数IOS存取位置:/private/var/mobile/Containers/Data/Application/2FEC9F6C-0EDA-498C-B8AD-E9ED35ED0AD5/tmp/tmp.roAY9d //:伴随应用打包时就一起发布文件出去供所有用户user都可以在APP中读取这些文件的APP的内部路径,不可见:即.\StartUp\Documents\ ,只有在Project-Options->Versin info->下增设了key: UIFileSharingEnabled = true才可见

TPath.GetTempPath参数IOS存取位置: /private/var/mobile/Containers/Data/Application/02029637-C492-4ECA-8D14-96731ADB7CC2/tmp :获得权限后可读可写

TPath.GetHomePath参数IOS存取位置:/private/var/mobile/Containers/Data/Application/02029637-C492-4ECA-8D14-96731ADB7CC2 //:伴随应用打包时就一起分发文件出去供所有用户user都可以在APP中读取这些文件的APP的内部路径,不可见:即.\StartUp\Documents\ ,只有在Project-Options->Versin info->下增设了key: UIFileSharingEnabled = true才可见

获得权限后可读但不可写

TPath.GetDocumentsPath 参数IOS存取位置:/var/mobile/Containers/Data/Application/02029637-C492-4ECA-8D14-96731ADB7CC2/Documents //:伴随应用打包时就一起分发文件出去供所有用户user都可以在APP中读取这些文件的APP的内部路径,不可见:即.\StartUp\Documents\ ,只有在Project-Options->Versin info->下增设了key:UIFileSharingEnabled = true才可见:但须根据TPath.GetHomePath参数进行路径拼接

获得权限后可读可写

TPath.GetLibraryPath参数IOS存取位置:/var/mobile/Containers/Data/Application/02029637-C492-4ECA-8D14-96731ADB7CC2/Library

//:TPath.GetTempPath+ PathDelim +'temp' 下保存的文件每次app重新启动会删除。webbrowser只能访问该文件夹下的内容

TPath.GetCachePath参数IOS存取位置:/var/mobile/Containers/Data/Application/02029637-C492-4ECA-8D14-96731ADB7CC2/Library/Caches

//:TPath.GetCachePath+ PathDelim +'temp' 下载的缓存文件在这里保存,重启app一般不会删除

TPath.GetSharedDocumentsPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:如果用Shared的路径,会闪退,因为它没有内部SD卡】

TPath.GetPublicPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】

TPath.GetPicturesPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】

TPath.GetSharedPicturesPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】

TPath.GetCameraPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】

TPath.GetSharedCameraPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】

TPath.GetMusicPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】

TPath.GetSharedMusicPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】

TPath.GetMoviesPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】

TPath.GetSharedMoviesPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】

TPath.GetAlarmsPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】

TPath.GetSharedAlarmsPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】

TPath.GetDownloadsPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】

TPath.GetSharedDownloadsPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】

TPath.GetRingtonesPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】

TPath.GetSharedRingtonesPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】

TPath.GetRingtonesPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】

(四)、MAC电脑设备

TPath.GetDirectoryName(Filename)参数MAC存取位置:

TPath.GetExtension(Filename)参数MAC存取位置:.pdf

TPath.GetFileName(Filename)参数MAC存取位置:NO.XSKD20150304048.pdf

TPath.GetFileNameWithoutExtension(Filename)参数MAC存取位置:NO.XSKD20150304048

TPath.GetFullPath(Filename)参数MAC存取位置:/Users/laichao/PAServer/scratch-dir/Administrator-PAS20.0/MainPro.app/Contents/MacOS/NO.XSKD20150304048.pdf

TPath.GetPathRoot(Filename)参数MAC存取位置:

TPath.GetRandomFileName参数MAC存取位置:4l7NYSdR.LXy

TPath.GetTempFileName参数MAC存取位置:/var/folders/7f/jkpz5l996msgztm4lrq0pwv80000gn/T/tmp.HlKqnT

TPath.GetTempPath参数MAC存取位置:/var/folders/7f/jkpz5l996msgztm4lrq0pwv80000gn/T/

TPath.GetHomePath参数MAC存取位置:/Users/laichao

TPath.GetDocumentsPath参数MAC存取位置:/Users/laichao/Documents

TPath.GetSharedDocumentsPath参数MAC存取位置:/Users/laichao/Public

TPath.GetLibraryPath参数MAC存取位置:/Users/laichao/Library

TPath.GetCachePath参数MAC存取位置:/Users/laichao/Library/Caches

TPath.GetPublicPath参数MAC存取位置:/Users/laichao/Public

TPath.GetPicturesPath参数MAC存取位置:/Users/laichao/Pictures

TPath.GetSharedPicturesPath参数MAC存取位置:/Users/laichao/Public

TPath.GetCameraPath参数MAC存取位置:/Users/laichao/Pictures

TPath.GetSharedCameraPath参数MAC存取位置:/Users/laichao/Public

TPath.GetMusicPath参数MAC存取位置:/Users/laichao/Music

TPath.GetSharedMusicPath参数MAC存取位置:/Users/laichao/Public

TPath.GetMoviesPath参数MAC存取位置:/Users/laichao/Movies

TPath.GetSharedMoviesPath参数MAC存取位置:/Users/laichao/Public

TPath.GetAlarmsPath参数MAC存取位置:/Users/laichao/Music

TPath.GetSharedAlarmsPath参数MAC存取位置:/Users/laichao/Public

TPath.GetDownloadsPath参数MAC存取位置:/Users/laichao/Downloads

TPath.GetSharedDownloadsPath参数MAC存取位置:/Users/laichao/Public

TPath.GetRingtonesPath参数MAC存取位置:/Users/laichao/Music

TPath.GetSharedRingtonesPath参数MAC存取位置:/Users/laichao/Public

TPath.GetRingtonesPath参数MAC存取位置:/Users/laichao/Music

三、建议各操作系统采用公用路径表达方式

获取你的App应用数据的主路径:TPath.GetHomePath

1、MSWINDOWS

指:

C:\Users\Administrator\AppData\Roaming :在MSWINDOWS下,遍历所有应用程序的数据的根路径,后需要增加一个自己应用的名称作为子路径来识别自己的应用,比如:/MainPro,结果为:C:\Users\Administrator\AppData\Roaming/MainPro。这个根路径默认是隐藏的,同时需要Administrator管理权限才可以访问。

2、Android

指:

/data/user/0/com.embarcadero.MainPro

其中:com.embarcadero.MainPro:你的应用的唯一标识:package包名

3、IOS

指:

/var/mobile/Containers/Data/Application/02029637-C492-4ECA-8D14-96731ADB7CC2

其中:02029637-C492-4ECA-8D14-96731ADB7CC2:你的应用的唯一标识:CFBundleName包名的32位MD5码/32位Hash码

四、结论

**1、**由上看出,由于IOS在没有APP端代码请求权限的情况下,是不允许访问操作系统自带的各个共享路径的,比如:相册GetCameraPath、图片GetSharedPicturesPath、音乐GetSharedMusicPath、视频GetSharedMoviesPath、下载GetSharedDownloadsPath等,所以,最好是读写可以缓存的文件夹和其下的文件。

通用平台的可以缓存的文件夹和其下的文件的代码:

{$IFDEF MSWINDOWS}

Result := ExtractFilePath(ParamStr(0));

{$ENDIF MSWINDOWS}

{$IFDEF IOS}

Result :=TPath.GetCachePath;

//:重启后不会删除,文件(夹)可见在MAC下调试可用PAServer显示包的内容;TPath.GetTempPath为临时缓存重启后就没了(可见)

{$ENDIF IOS}

{$IFDEF MACOS}

Result := TPath.GetCachePath;//:重启后不会删除,TPath.GetTempPath为临时缓存重启后就没了;均(可见)

{$ENDIF MACOS}

{$IFDEF Android}

Result := TPath.GetSharedDocumentsPath; // 安卓外部SD卡(外存),文件(夹)可见,在根下Documents

Result := TPath.GetDocumentsPath; // 安卓若无外部SD卡,则用内部存储(内存),文件(夹)不可见

{$ENDIF Android}

2、通用平台的分发路径(项目Deployment下的Remote Path)的代码:

{$IF DEFINED(IOS) or DEFINED(ANDROID) }

Result := TPath.GetDocumentsPath + PathDelim + aFileName;

{$ELSE}//MSWINDOWS或MACOS,但含义和实际位置不同:

Result := ExtractFilePath (ParamStr(0)) + aFileName;

//:MSWINDOWS 下:即可执行文件路径

//:MACOS下:并非Unix Execute可执行文件的路径,而是Contents\Resources\StartUp\

{$ENDIF}

注意:

// IOS下项目Deployment下的Remote Path应设为:StartUp\Documents\

// Android下项目Deployment下的Remote Path应设为:Assets\internal\

// MACOS下项目Deployment下的Remote Path应设为:Contents\Resources\StartUp\
//:MACOS下Contents\MacOS\路径下放这些文件:

// :1、项目输出路径ProjectOutput即Unix Execute可执行文件;

// :2、项目特征文件库诸如libcgsqlite3.dylib和libmidas.dylib

MACOS下下的文件分发(图片输出全部放到 Contents\Resources\StartUp\):

五、用Http或Https 下载资源

1、判断客户端操作系统类别OsType

2、根据操作系统类别OsType,下载web服务器上不同路径下的资源

六、打开下载到本地的一个资源链接,用本地已有的资源库打开文件进行浏览或覆盖安装所下App包

4.1、Windows打开一个路径文件

4.1.1、安装程序应当判断旧版是否在运行,如在运行现将其给关闭后,再执行安装。(不影响数据)

4.1.2、关于数据:

.INI文件和.txt等App的配置文件:里面保存了旧版应用的本地配置,应当在通知新版有新版时先备份到指定路径,然后等待新版覆盖安装结束起订运行时读取并覆盖。

4.2、android或IOS打开一个url

4.2.1、直接覆盖安装(不影响数据),操作系统安装完毕执行"打开",会自动提示是否删除安装包。

4.1.2、关于数据:

.INI文件和.txt等App的配置文件:里面保存了旧版应用的本地配置,应当在通知新版有新版时先备份到指定路径,然后等待新版覆盖安装结束起订运行时读取并覆盖。

七、牵引软件自动下载升级流程图

八、POSIX权限

(一)、Android : uses Androidapi.JNI.Os , System.Permissions ;

JManifest_permissionClass = interface(JObjectClass)

['{7138C56B-F5A7-4319-8D1D-0035C5F4E01A}']

//(访问登记属性)读取或写入登记check-in数据库属性表的权限

{class} property ACCESS_CHECKIN_PROPERTIES: JString read _GetACCESS_CHECKIN_PROPERTIES;

//(获取粗略位置)通过WiFi或移动基站的方式获取用户错略的经纬度信息,定位精度大概误差在30~1500米

{class} property ACCESS_COARSE_LOCATION: JString read _GetACCESS_COARSE_LOCATION;

//(获取精确位置)通过GPS芯片接收卫星的定位信息,定位精度达10米以内

{class} property ACCESS_FINE_LOCATION: JString read _GetACCESS_FINE_LOCATION;

//(访问定位额外命令)允许程序访问额外的定位提供者指令

{class} property ACCESS_LOCATION_EXTRA_COMMANDS: JString read _GetACCESS_LOCATION_EXTRA_COMMANDS;

//(获取网络状态)获取网络信息状态,如当前的网络连接是否有效

{class} property ACCESS_NETWORK_STATE: JString read _GetACCESS_NETWORK_STATE;

//通知 APP通知显示在状态栏

{class} property ACCESS_NOTIFICATION_POLICY: JString read _GetACCESS_NOTIFICATION_POLICY;

//(获取WiFi状态)获取当前WiFi接入的状态以及WLAN热点的信息

{class} property ACCESS_WIFI_STATE: JString read _GetACCESS_WIFI_STATE;

//(账户管理)获取账户验证信息,主要为GMail账户信息,只有系统级进程才能访问的权限

{class} property ACCOUNT_MANAGER: JString read _GetACCOUNT_MANAGER;

//通讯录权限

{class} property ADD_VOICEMAIL: JString read _GetADD_VOICEMAIL;

//允许您的应用通过编程方式接听呼入电话

{class} property ANSWER_PHONE_CALLS: JString read _GetANSWER_PHONE_CALLS;

//(电量统计)获取电池电量统计信息

{class} property BATTERY_STATS: JString read _GetBATTERY_STATS;

//绑定访问服务

{class} property BIND_ACCESSIBILITY_SERVICE: JString read _GetBIND_ACCESSIBILITY_SERVICE;

//(绑定小插件)允许一个程序告诉appWidget服务需要访问小插件的数据库

{class} property BIND_APPWIDGET: JString read _GetBIND_APPWIDGET;

//

{class} property BIND_AUTOFILL_SERVICE: JString read _GetBIND_AUTOFILL_SERVICE;

//这个常数是在API级别23否决。使用 BIND_CARRIER_SERVICES 替代

{class} property BIND_CARRIER_MESSAGING_SERVICE: JString read _GetBIND_CARRIER_MESSAGING_SERVICE;

//允许在载体应用程序中绑定服务的系统进程将有此权限

{class} property BIND_CARRIER_SERVICES: JString read _GetBIND_CARRIER_SERVICES;

//必须由 要求,确保只有系统可以绑定到它。

{class} property BIND_CHOOSER_TARGET_SERVICE: JString read _GetBIND_CHOOSER_TARGET_SERVICE;

{class} property BIND_CONDITION_PROVIDER_SERVICE: JString read _GetBIND_CONDITION_PROVIDER_SERVICE;

//(绑定设备管理)请求系统管理员接收者receiver,只有系统才能使用

{class} property BIND_DEVICE_ADMIN: JString read _GetBIND_DEVICE_ADMIN;

//

{class} property BIND_DREAM_SERVICE: JString read _GetBIND_DREAM_SERVICE;

//

{class} property BIND_INCALL_SERVICE: JString read _GetBIND_INCALL_SERVICE;

//(绑定输入法)请求InputMethodService服务,只有系统才能使用

{class} property BIND_INPUT_METHOD: JString read _GetBIND_INPUT_METHOD;

//

{class} property BIND_MIDI_DEVICE_SERVICE: JString read _GetBIND_MIDI_DEVICE_SERVICE;

//

{class} property BIND_NFC_SERVICE: JString read _GetBIND_NFC_SERVICE;

//

{class} property BIND_NOTIFICATION_LISTENER_SERVICE: JString read _GetBIND_NOTIFICATION_LISTENER_SERVICE;

//

{class} property BIND_PRINT_SERVICE: JString read _GetBIND_PRINT_SERVICE;

//

{class} property BIND_QUICK_SETTINGS_TILE: JString read _GetBIND_QUICK_SETTINGS_TILE;

//(绑定RemoteView)必须通过RemoteViewsService服务来请求,只有系统才能用

{class} property BIND_REMOTEVIEWS: JString read _GetBIND_REMOTEVIEWS;

//

{class} property BIND_SCREENING_SERVICE: JString read _GetBIND_SCREENING_SERVICE;

//

{class} property BIND_TELECOM_CONNECTION_SERVICE: JString read _GetBIND_TELECOM_CONNECTION_SERVICE;

//

{class} property BIND_TEXT_SERVICE: JString read _GetBIND_TEXT_SERVICE;

//

{class} property BIND_TV_INPUT: JString read _GetBIND_TV_INPUT;

//

{class} property BIND_VISUAL_VOICEMAIL_SERVICE: JString read _GetBIND_VISUAL_VOICEMAIL_SERVICE;

//

{class} property BIND_VOICE_INTERACTION: JString read _GetBIND_VOICE_INTERACTION;

//

{class} property BIND_VPN_SERVICE: JString read _GetBIND_VPN_SERVICE;

//

{class} property BIND_VR_LISTENER_SERVICE: JString read _GetBIND_VR_LISTENER_SERVICE;

//(绑定壁纸)必须通过WallpaperService服务来请求,只有系统才能用

{class} property BIND_WALLPAPER: JString read _GetBIND_WALLPAPER;

//(使用蓝牙 )允许程序连接配对过的蓝牙设备

{class} property BLUETOOTH: JString read _GetBLUETOOTH;

//(蓝牙管理)允许程序进行发现和配对新的蓝牙设备

{class} property BLUETOOTH_ADMIN: JString read _GetBLUETOOTH_ADMIN;

//

{class} property BLUETOOTH_PRIVILEGED: JString read _GetBLUETOOTH_PRIVILEGED;

//

{class} property BODY_SENSORS: JString read _GetBODY_SENSORS;

//(应用删除时广播)当一个应用在删除时触发一个广播

{class} property BROADCAST_PACKAGE_REMOVED: JString read _GetBROADCAST_PACKAGE_REMOVED;

//(收到短信时广播)当收到短信时触发一个广播

{class} property BROADCAST_SMS: JString read _GetBROADCAST_SMS;

//(连续广播)允许一个程序收到广播后快速收到下一个广播

{class} property BROADCAST_STICKY: JString read _GetBROADCAST_STICKY;

//(WAP PUSH广播)WAP PUSH服务收到后触发一个广播

{class} property BROADCAST_WAP_PUSH: JString read _GetBROADCAST_WAP_PUSH;

//(拨打电话)允许程序从非系统拨号器里输入电话号码

{class} property CALL_PHONE: JString read _GetCALL_PHONE;

//(通话权限)允许程序拨打电话,替换系统的拨号器界面

{class} property CALL_PRIVILEGED: JString read _GetCALL_PRIVILEGED;

//(拍照权限)允许访问摄像头进行拍照

{class} property CAMERA: JString read _GetCAMERA;

//

{class} property CAPTURE_AUDIO_OUTPUT: JString read _GetCAPTURE_AUDIO_OUTPUT;

//

{class} property CAPTURE_SECURE_VIDEO_OUTPUT: JString read _GetCAPTURE_SECURE_VIDEO_OUTPUT;

//

{class} property CAPTURE_VIDEO_OUTPUT: JString read _GetCAPTURE_VIDEO_OUTPUT;

//(改变组件状态)改变组件是否启用状态

{class} property CHANGE_COMPONENT_ENABLED_STATE: JString read _GetCHANGE_COMPONENT_ENABLED_STATE;

//(改变配置)允许当前应用改变配置,如定位

{class} property CHANGE_CONFIGURATION: JString read _GetCHANGE_CONFIGURATION;

//(改变网络状态)改变网络状态如是否能联网

{class} property CHANGE_NETWORK_STATE: JString read _GetCHANGE_NETWORK_STATE;

//(改变WiFi多播状态)改变WiFi多播状态

{class} property CHANGE_WIFI_MULTICAST_STATE: JString read _GetCHANGE_WIFI_MULTICAST_STATE;

//(改变WiFi状态)改变WiFi状态

{class} property CHANGE_WIFI_STATE: JString read _GetCHANGE_WIFI_STATE;

//清除应用缓存

{class} property CLEAR_APP_CACHE: JString read _GetCLEAR_APP_CACHE;

//(控制定位更新)允许获得移动网络定位信息改变

{class} property CONTROL_LOCATION_UPDATES: JString read _GetCONTROL_LOCATION_UPDATES;

//(删除缓存文件)允许应用删除缓存文件

{class} property DELETE_CACHE_FILES: JString read _GetDELETE_CACHE_FILES;

//允许程序删除应用

{class} property DELETE_PACKAGES: JString read _GetDELETE_PACKAGES;

//允许程序到RW到诊断资源

{class} property DIAGNOSTIC: JString read _GetDIAGNOSTIC;

//允许程序禁用键盘锁

{class} property DISABLE_KEYGUARD: JString read _GetDISABLE_KEYGUARD;

//允许程序获取系统dump信息从系统服务

{class} property DUMP: JString read _GetDUMP;

//允许程序扩展或收缩状态栏

{class} property EXPAND_STATUS_BAR: JString read _GetEXPAND_STATUS_BAR;

//允许程序运行工厂测试模式

{class} property FACTORY_TEST: JString read _GetFACTORY_TEST;

//访问GMail账户列表

{class} property GET_ACCOUNTS: JString read _GetGET_ACCOUNTS;

//获得特权帐户

{class} property GET_ACCOUNTS_PRIVILEGED: JString read _GetGET_ACCOUNTS_PRIVILEGED;

//获取应用的文件大小

{class} property GET_PACKAGE_SIZE: JString read _GetGET_PACKAGE_SIZE;

//允许程序获取当前或最近运行的应用

{class} property GET_TASKS: JString read _GetGET_TASKS;

//允许程序使用全局搜索功能

{class} property GLOBAL_SEARCH: JString read _GetGLOBAL_SEARCH;

//安装定位提供

{class} property INSTALL_LOCATION_PROVIDER: JString read _GetINSTALL_LOCATION_PROVIDER;

//允许程序安装应用

{class} property INSTALL_PACKAGES: JString read _GetINSTALL_PACKAGES;

//

{class} property INSTALL_SHORTCUT: JString read _GetINSTALL_SHORTCUT;

//

{class} property INSTANT_APP_FOREGROUND_SERVICE: JString read _GetINSTANT_APP_FOREGROUND_SERVICE;

//访问网络连接,可能产生GPRS流量

{class} property INTERNET: JString read _GetINTERNET;

//允许程序调用killBackgroundProcesses(String).方法结束后台进程

{class} property KILL_BACKGROUND_PROCESSES: JString read _GetKILL_BACKGROUND_PROCESSES;

//位置硬件

{class} property LOCATION_HARDWARE: JString read _GetLOCATION_HARDWARE;

//管理文件

{class} property MANAGE_DOCUMENTS: JString read _GetMANAGE_DOCUMENTS;

//允许通过自我管理的ConnectionService API管理自己的调用的调用应用程序

{class} property MANAGE_OWN_CALLS: JString read _GetMANAGE_OWN_CALLS;

//允许程序执行软格式化,删除系统配置信息

{class} property MASTER_CLEAR: JString read _GetMASTER_CLEAR;

{class} property MEDIA_CONTENT_CONTROL: JString read _GetMEDIA_CONTENT_CONTROL;

//修改声音设置信息

{class} property MODIFY_AUDIO_SETTINGS: JString read _GetMODIFY_AUDIO_SETTINGS;

//修改电话状态,如飞行模式,但不包含替换系统拨号器界面

{class} property MODIFY_PHONE_STATE: JString read _GetMODIFY_PHONE_STATE;

//格式化可移动文件系统,比如格式化清空SD卡

{class} property MOUNT_FORMAT_FILESYSTEMS: JString read _GetMOUNT_FORMAT_FILESYSTEMS;

//挂载、反挂载外部文件系统

{class} property MOUNT_UNMOUNT_FILESYSTEMS: JString read _GetMOUNT_UNMOUNT_FILESYSTEMS;

//允许程序执行NFC近距离通讯操作,用于移动支持

{class} property NFC: JString read _GetNFC;

//安装包使用情况

{class} property PACKAGE_USAGE_STATS: JString read _GetPACKAGE_USAGE_STATS;

//创建一个永久的Activity,该功能标记为将来将被移除

{class} property PERSISTENT_ACTIVITY: JString read _GetPERSISTENT_ACTIVITY;

//允许程序监视,修改或放弃拨出电话

{class} property PROCESS_OUTGOING_CALLS: JString read _GetPROCESS_OUTGOING_CALLS;

//允许程序读取用户的日程信息

{class} property READ_CALENDAR: JString read _GetREAD_CALENDAR;

//读取通话记录日志

{class} property READ_CALL_LOG: JString read _GetREAD_CALL_LOG;

//读取联系方式

{class} property READ_CONTACTS: JString read _GetREAD_CONTACTS;

//读取外部存储

{class} property READ_EXTERNAL_STORAGE: JString read _GetREAD_EXTERNAL_STORAGE;

//读取帧缓存用于屏幕截图

{class} property READ_FRAME_BUFFER: JString read _GetREAD_FRAME_BUFFER;

//读取当前键的输入状态,仅用于系统

{class} property READ_INPUT_STATE: JString read _GetREAD_INPUT_STATE;

//读取系统底层日志

{class} property READ_LOGS: JString read _GetREAD_LOGS;

//读取电话号码

{class} property READ_PHONE_NUMBERS: JString read _GetREAD_PHONE_NUMBERS;

//访问电话状态

{class} property READ_PHONE_STATE: JString read _GetREAD_PHONE_STATE;

//读取短信内容

{class} property READ_SMS: JString read _GetREAD_SMS;

//读取同步设置,读取Google在线同步设置

{class} property READ_SYNC_SETTINGS: JString read _GetREAD_SYNC_SETTINGS;

//读取同步状态,获得Google在线同步状态

{class} property READ_SYNC_STATS: JString read _GetREAD_SYNC_STATS;

{class} property READ_VOICEMAIL: JString read _GetREAD_VOICEMAIL;

//允许程序重新启动设备

{class} property REBOOT: JString read _GetREBOOT;

//允许程序开机自动运行

{class} property RECEIVE_BOOT_COMPLETED: JString read _GetRECEIVE_BOOT_COMPLETED;

//接收彩信

{class} property RECEIVE_MMS: JString read _GetRECEIVE_MMS;

//接收短信

{class} property RECEIVE_SMS: JString read _GetRECEIVE_SMS;

//接收WAP PUSH信息

{class} property RECEIVE_WAP_PUSH: JString read _GetRECEIVE_WAP_PUSH;

//录制声音通过手机或耳机的麦克

{class} property RECORD_AUDIO: JString read _GetRECORD_AUDIO;

//重新排序系统Z轴运行中的任务

{class} property REORDER_TASKS: JString read _GetREORDER_TASKS;

//允许伴随应用在后台运行

{class} property REQUEST_COMPANION_RUN_IN_BACKGROUND: JString read _GetREQUEST_COMPANION_RUN_IN_BACKGROUND;

//允许伴随应用在后台使用数据

{class} property REQUEST_COMPANION_USE_DATA_IN_BACKGROUND: JString read _GetREQUEST_COMPANION_USE_DATA_IN_BACKGROUND;

//允许应用程序请求删除软件包

{class} property REQUEST_DELETE_PACKAGES: JString read _GetREQUEST_DELETE_PACKAGES;

//请求更大的电池优化

{class} property REQUEST_IGNORE_BATTERY_OPTIMIZATIONS: JString read _GetREQUEST_IGNORE_BATTERY_OPTIMIZATIONS;

//安装应用程序

{class} property REQUEST_INSTALL_PACKAGES: JString read _GetREQUEST_INSTALL_PACKAGES;

//结束任务通过restartPackage(String)方法,该方式将在外来放弃

{class} property RESTART_PACKAGES: JString read _GetRESTART_PACKAGES;

//通过邮件发送回复

{class} property SEND_RESPOND_VIA_MESSAGE: JString read _GetSEND_RESPOND_VIA_MESSAGE;

//发送短信

{class} property SEND_SMS: JString read _GetSEND_SMS;

//设置闹铃提醒

{class} property SET_ALARM: JString read _GetSET_ALARM;

//设置程序在后台是否总是退出

{class} property SET_ALWAYS_FINISH: JString read _GetSET_ALWAYS_FINISH;

//设置全局动画缩放

{class} property SET_ANIMATION_SCALE: JString read _GetSET_ANIMATION_SCALE;

//设置调试程序,

{class} property SET_DEBUG_APP: JString read _GetSET_DEBUG_APP;

//设置应用的参数

{class} property SET_PREFERRED_APPLICATIONS: JString read _GetSET_PREFERRED_APPLICATIONS;

//允许程序设置最大的进程数量的限制

{class} property SET_PROCESS_LIMIT: JString read _GetSET_PROCESS_LIMIT;

//设置系统时间

{class} property SET_TIME: JString read _GetSET_TIME;

//设置系统时区

{class} property SET_TIME_ZONE: JString read _GetSET_TIME_ZONE;

//设置桌面壁纸

{class} property SET_WALLPAPER: JString read _GetSET_WALLPAPER;

//设置壁纸建议

{class} property SET_WALLPAPER_HINTS: JString read _GetSET_WALLPAPER_HINTS;

//发送一个永久的进程信号

{class} property SIGNAL_PERSISTENT_PROCESSES: JString read _GetSIGNAL_PERSISTENT_PROCESSES;

//允许程序打开、关闭、禁用状态栏

{class} property STATUS_BAR: JString read _GetSTATUS_BAR;

//显示系统窗口

{class} property SYSTEM_ALERT_WINDOW: JString read _GetSYSTEM_ALERT_WINDOW;

//红外发送

{class} property TRANSMIT_IR: JString read _GetTRANSMIT_IR;

//卸载快捷方式

{class} property UNINSTALL_SHORTCUT: JString read _GetUNINSTALL_SHORTCUT;

//更新设备状态

{class} property UPDATE_DEVICE_STATS: JString read _GetUPDATE_DEVICE_STATS;

//指纹识别

{class} property USE_FINGERPRINT: JString read _GetUSE_FINGERPRINT;

//允许程序使用SIP视频服务

{class} property USE_SIP: JString read _GetUSE_SIP;

//允许振动

{class} property VIBRATE: JString read _GetVIBRATE;

//允许程序在手机屏幕关闭后后台进程仍然运行

{class} property WAKE_LOCK: JString read _GetWAKE_LOCK;

//写入网络GPRS接入点设置

{class} property WRITE_APN_SETTINGS: JString read _GetWRITE_APN_SETTINGS;

//写入日程,但不可读取

{class} property WRITE_CALENDAR: JString read _GetWRITE_CALENDAR;

//

{class} property WRITE_CALL_LOG: JString read _GetWRITE_CALL_LOG;

//写入联系人,但不可读取

{class} property WRITE_CONTACTS: JString read _GetWRITE_CONTACTS;

//模拟器中sdcard中创建文件夹的权限

{class} property WRITE_EXTERNAL_STORAGE: JString read _GetWRITE_EXTERNAL_STORAGE;

//允许程序写入Google Map服务数据

{class} property WRITE_GSERVICES: JString read _GetWRITE_GSERVICES;

//允许程序读写系统安全敏感的设置项

{class} property WRITE_SECURE_SETTINGS: JString read _GetWRITE_SECURE_SETTINGS;

//允许读写系统设置项

{class} property WRITE_SETTINGS: JString read _GetWRITE_SETTINGS;

//写入Google在线同步设置

{class} property WRITE_SYNC_SETTINGS: JString read _GetWRITE_SYNC_SETTINGS;

//

{class} property WRITE_VOICEMAIL: JString read _GetWRITE_VOICEMAIL;

end;

(二)、IOS

十、杂

IOS开发者路径:

android内部全路径:

相关推荐
love530love2 小时前
Windows 11 中利用 WSL - Linux 虚拟环境部署 ChatTTS-Enhanced 项目教程
linux·运维·windows
kaixin_啊啊2 小时前
Windows电脑异地SSH远程连接苹果MacOS小主机Mac mini详细教程
windows·macos·ssh
暗碳3 小时前
macrodroid通过http请求控制手机运行宏
http·智能手机
开心工作室_kaic3 小时前
springboot496基于java手机销售网站设计和实现(论文+源码)_kaic
java·开发语言·智能手机
xuexixuexien3 小时前
.NetCore WebAPI 导入、导出Excel文件
windows·excel·.netcore
云云3216 小时前
云手机:Facebook多账号管理的创新解决方案
服务器·线性代数·安全·智能手机·架构·facebook
码农君莫笑8 小时前
《信管通低代码信息管理系统开发平台》Windows环境安装说明
服务器·数据库·windows·低代码·c#·bootstrap·.netcore
CES_Asia8 小时前
国资助力科技创新,闪耀CES Asia 2025
人工智能·科技·智能手机·智能音箱·智能电视
葡萄架子11 小时前
用Python写炸金花游戏
windows·python·游戏
云云32115 小时前
云手机服务器如何做到群控多台手机的?
服务器·线性代数·安全·智能手机·矩阵