Interface AppInfo
- All Superinterfaces:
Proxy
- All Known Implementing Classes:
AppInfo.AppInfo$Impl,OsxAppInfo
GAppInfo and GAppLaunchContext are used for describing and launching
applications installed on the system.
As of GLib 2.20, URIs will always be converted to POSIX paths
(using File.getPath()) when using launch(org.gnome.glib.List<org.gnome.gio.File>, org.gnome.gio.AppLaunchContext)
even if the application requested an URI and not a POSIX path. For example
for a desktop-file based application with the following Exec key:
Exec=totem %U
and a single URI, sftp://foo/file.avi, then
/home/user/.gvfs/sftp on foo/file.avi will be passed. This will only work
if a set of suitable GIO extensions (such as GVfs 2.26 compiled with FUSE
support), is available and operational; if this is not the case, the URI
will be passed unmodified to the application. Some URIs, such as mailto:,
of course cannot be mapped to a POSIX path (in GVfs there’s no FUSE mount
for it); such URIs will be passed unmodified to the application.
Specifically for GVfs 2.26 and later, the POSIX URI will be mapped
back to the GIO URI in the File constructors (since GVfs
implements the GVfs extension point). As such, if the application
needs to examine the URI, it needs to use File.getUri()
or similar on File. In other words, an application cannot
assume that the URI passed to e.g. File.newForCommandlineArg(java.lang.String)
is equal to the result of File.getUri(). The following snippet
illustrates this:
GFile *f;
char *uri;
file = g_file_new_for_commandline_arg (uri_from_commandline);
uri = g_file_get_uri (file);
strcmp (uri, uri_from_commandline) == 0;
g_free (uri);
if (g_file_has_uri_scheme (file, "cdda"))
{
// do something special with uri
}
g_object_unref (file);
This code will work when both cdda://sr0/Track 1.wav and
/home/user/.gvfs/cdda on sr0/Track 1.wav is passed to the
application. It should be noted that it’s generally not safe
for applications to rely on the format of a particular URIs.
Different launcher applications (e.g. file managers) may have
different ideas of what a given URI means.
-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic classThe AppInfo$Impl type represents a native instance of the AppInfo interface.static classApplication Information interface, for operating system portability. -
Method Summary
Modifier and TypeMethodDescriptiondefault booleanaddSupportsType(String contentType) Adds a content type to the application information to indicate the application is capable of opening files with the given content type.default booleanObtains the information whether theAppInfocan be deleted.default booleanChecks if a supported content type can be removed from an application.static AppInfocreateFromCommandline(String commandline, @Nullable String applicationName, Set<AppInfoCreateFlags> flags) Creates a newAppInfofrom the given information.static AppInfocreateFromCommandline(String commandline, @Nullable String applicationName, AppInfoCreateFlags... flags) Creates a newAppInfofrom the given information.default booleandelete()Tries to delete aAppInfo.default AppInfodup()Creates a duplicate of aAppInfo.default booleanChecks if twoAppInfos are equal.getAll()Gets a list of all of the applications currently registered on this system.getAllForType(String contentType) default @Nullable StringGets the commandline with which the application will be started.static @Nullable AppInfogetDefaultForType(String contentType, boolean mustSupportUris) Gets the defaultAppInfofor a given content type.static voidgetDefaultForTypeAsync(String contentType, boolean mustSupportUris, @Nullable Cancellable cancellable, @Nullable AsyncReadyCallback callback) Asynchronously gets the defaultAppInfofor a given content type.static AppInfogetDefaultForTypeFinish(AsyncResult result) Finishes a defaultAppInfolookup started bygetDefaultForTypeAsync(java.lang.String, boolean, org.gnome.gio.Cancellable, org.gnome.gio.AsyncReadyCallback).static @Nullable AppInfogetDefaultForUriScheme(String uriScheme) Gets the default application for handling URIs with the given URI scheme.static voidgetDefaultForUriSchemeAsync(String uriScheme, @Nullable Cancellable cancellable, @Nullable AsyncReadyCallback callback) Asynchronously gets the default application for handling URIs with the given URI scheme.static AppInfoFinishes a defaultAppInfolookup started bygetDefaultForUriSchemeAsync(java.lang.String, org.gnome.gio.Cancellable, org.gnome.gio.AsyncReadyCallback).default @Nullable StringGets a human-readable description of an installed application.default StringGets the display name of the application.default StringGets the executable’s name for the installed application.getFallbackForType(String contentType) Gets a list of fallbackAppInfos for a given content type, i.e.default @Nullable IcongetIcon()Gets the icon for the application.default @Nullable StringgetId()Gets the ID of an application.default StringgetName()Gets the installed name of the application.getRecommendedForType(String contentType) Gets a list of recommendedAppInfos for a given content type, i.e.default String[]Retrieves the list of content types thatappInfoclaims to support.static @Nullable TypegetType()Get the GType of the AppInfo classdefault booleanlaunch(@Nullable List<File> files, @Nullable AppLaunchContext context) Launches the application.static booleanlaunchDefaultForUri(String uri, @Nullable AppLaunchContext context) Utility function that launches the default application registered to handle the specified uri.static voidlaunchDefaultForUriAsync(String uri, @Nullable AppLaunchContext context, @Nullable Cancellable cancellable, @Nullable AsyncReadyCallback callback) Async version oflaunchDefaultForUri(java.lang.String, org.gnome.gio.AppLaunchContext).static booleanlaunchDefaultForUriFinish(AsyncResult result) Finishes an asynchronous launch-default-for-uri operation.default booleanlaunchUris(@Nullable List<String> uris, @Nullable AppLaunchContext context) Launches the application.default voidlaunchUrisAsync(@Nullable List<String> uris, @Nullable AppLaunchContext context, @Nullable Cancellable cancellable, @Nullable AsyncReadyCallback callback) default booleanlaunchUrisFinish(AsyncResult result) default booleanremoveSupportsType(String contentType) Removes a supported type from an application, if possible.static voidresetTypeAssociations(String contentType) Removes all changes to the type associations done bysetAsDefaultForType(java.lang.String),setAsDefaultForExtension(java.lang.String),addSupportsType(java.lang.String)orremoveSupportsType(java.lang.String).default booleansetAsDefaultForExtension(String extension) Sets the application as the default handler for the given file extension.default booleansetAsDefaultForType(String contentType) Sets the application as the default handler for a given type.default booleansetAsLastUsedForType(String contentType) Sets the application as the last used application for a given type.default booleanChecks if the application info should be shown in menus that list available applications.default booleanChecks if the application accepts files as arguments.default booleanChecks if the application supports reading files and directories from URIs.
-
Method Details
-
getType
-
createFromCommandline
static AppInfo createFromCommandline(String commandline, @Nullable String applicationName, Set<AppInfoCreateFlags> flags) throws GErrorException Creates a newAppInfofrom the given information.Note that for
commandline,the quoting rules of theExeckey of the freedesktop.org Desktop Entry Specification are applied. For example, if thecommandlinecontains percent-encoded URIs, the percent-character must be doubled in order to prevent it from being swallowed byExeckey unquoting. See the specification for exact quoting rules.- Parameters:
commandline- the command line to useapplicationName- the application name, orNULLto usecommandlineflags- flags that can specify details of the createdAppInfo- Returns:
- new
AppInfofor given command. - Throws:
GErrorException- seeGError
-
createFromCommandline
static AppInfo createFromCommandline(String commandline, @Nullable String applicationName, AppInfoCreateFlags... flags) throws GErrorException Creates a newAppInfofrom the given information.Note that for
commandline,the quoting rules of theExeckey of the freedesktop.org Desktop Entry Specification are applied. For example, if thecommandlinecontains percent-encoded URIs, the percent-character must be doubled in order to prevent it from being swallowed byExeckey unquoting. See the specification for exact quoting rules.- Parameters:
commandline- the command line to useapplicationName- the application name, orNULLto usecommandlineflags- flags that can specify details of the createdAppInfo- Returns:
- new
AppInfofor given command. - Throws:
GErrorException- seeGError
-
getAll
Gets a list of all of the applications currently registered on this system.For desktop files, this includes applications that have
NoDisplay=trueset or are excluded from display by means ofOnlyShowInorNotShowIn. SeeshouldShow().The returned list does not include applications which have the
Hiddenkey set.- Returns:
- a newly allocated
list of references to
AppInfos.
-
getAllForType
Gets a list of allAppInfos for a given content type, including the recommended and fallbackAppInfos. SeegetRecommendedForType(java.lang.String)andgetFallbackForType(java.lang.String). -
getDefaultForType
Gets the defaultAppInfofor a given content type. -
getDefaultForTypeAsync
static void getDefaultForTypeAsync(String contentType, boolean mustSupportUris, @Nullable Cancellable cancellable, @Nullable AsyncReadyCallback callback) Asynchronously gets the defaultAppInfofor a given content type.- Parameters:
contentType- the content type to find aAppInfoformustSupportUris- ifTRUE, theAppInfois expected to support URIscancellable- aCancellablecallback- aGio.AsyncReadyCallbackto call when the request is done- Since:
- 2.74
-
getDefaultForTypeFinish
Finishes a defaultAppInfolookup started bygetDefaultForTypeAsync(java.lang.String, boolean, org.gnome.gio.Cancellable, org.gnome.gio.AsyncReadyCallback).If no
[ifaceGio.AppInfo]is found, thenerrorwill be set toGio.IOErrorEnum.NOT_FOUND.- Parameters:
result- the async result- Returns:
AppInfofor givencontentTypeorNULLon error.- Throws:
GErrorException- seeGError- Since:
- 2.74
-
getDefaultForUriScheme
Gets the default application for handling URIs with the given URI scheme.A URI scheme is the initial part of the URI, up to but not including the
:. For example,http,ftporsip.- Parameters:
uriScheme- a string containing a URI scheme.- Returns:
AppInfofor givenuriSchemeorNULLon error.
-
getDefaultForUriSchemeAsync
static void getDefaultForUriSchemeAsync(String uriScheme, @Nullable Cancellable cancellable, @Nullable AsyncReadyCallback callback) Asynchronously gets the default application for handling URIs with the given URI scheme. A URI scheme is the initial part of the URI, up to but not including the:, e.g.http,ftporsip.- Parameters:
uriScheme- a string containing a URI scheme.cancellable- aCancellablecallback- aGio.AsyncReadyCallbackto call when the request is done- Since:
- 2.74
-
getDefaultForUriSchemeFinish
Finishes a defaultAppInfolookup started bygetDefaultForUriSchemeAsync(java.lang.String, org.gnome.gio.Cancellable, org.gnome.gio.AsyncReadyCallback).If no
AppInfois found, thenerrorwill be set toGio.IOErrorEnum.NOT_FOUND.- Parameters:
result- the async result- Returns:
AppInfofor givenuriSchemeorNULLon error.- Throws:
GErrorException- seeGError- Since:
- 2.74
-
getFallbackForType
Gets a list of fallbackAppInfos for a given content type, i.e. those applications which claim to support the given content type by MIME type subclassing and not directly. -
getRecommendedForType
Gets a list of recommendedAppInfos for a given content type, i.e. those applications which claim to support the given content type exactly, and not by MIME type subclassing.Note that the first application of the list is the last used one, i.e. the last one for which
setAsLastUsedForType(java.lang.String)has been called. -
launchDefaultForUri
static boolean launchDefaultForUri(String uri, @Nullable AppLaunchContext context) throws GErrorException Utility function that launches the default application registered to handle the specified uri. Synchronous I/O is done on the uri to detect the type of the file if required.The D-Bus–activated applications don’t have to be started if your application terminates too soon after this function. To prevent this, use
launchDefaultForUriAsync(java.lang.String, org.gnome.gio.AppLaunchContext, org.gnome.gio.Cancellable, org.gnome.gio.AsyncReadyCallback)instead.- Parameters:
uri- the uri to showcontext- optional launch context- Returns:
TRUEon success,FALSEon error.- Throws:
GErrorException- seeGError
-
launchDefaultForUriAsync
static void launchDefaultForUriAsync(String uri, @Nullable AppLaunchContext context, @Nullable Cancellable cancellable, @Nullable AsyncReadyCallback callback) Async version oflaunchDefaultForUri(java.lang.String, org.gnome.gio.AppLaunchContext).This version is useful if you are interested in receiving error information in the case where the application is sandboxed and the portal may present an application chooser dialog to the user.
This is also useful if you want to be sure that the D-Bus–activated applications are really started before termination and if you are interested in receiving error information from their activation.
- Parameters:
uri- the uri to showcontext- optional launch contextcancellable- aCancellablecallback- aGio.AsyncReadyCallbackto call when the request is done- Since:
- 2.50
-
launchDefaultForUriFinish
Finishes an asynchronous launch-default-for-uri operation.- Parameters:
result- the async result- Returns:
TRUEif the launch was successful,FALSEiferroris set- Throws:
GErrorException- seeGError- Since:
- 2.50
-
resetTypeAssociations
Removes all changes to the type associations done bysetAsDefaultForType(java.lang.String),setAsDefaultForExtension(java.lang.String),addSupportsType(java.lang.String)orremoveSupportsType(java.lang.String).- Parameters:
contentType- a content type- Since:
- 2.20
-
addSupportsType
Adds a content type to the application information to indicate the application is capable of opening files with the given content type.- Parameters:
contentType- a string.- Returns:
TRUEon success,FALSEon error.- Throws:
GErrorException- seeGError
-
canDelete
-
canRemoveSupportsType
default boolean canRemoveSupportsType()Checks if a supported content type can be removed from an application.- Returns:
TRUEif it is possible to remove supported content types from a givenappinfo,FALSEif not.
-
delete
default boolean delete()Tries to delete aAppInfo.On some platforms, there may be a difference between user-defined
AppInfos which can be deleted, and system-wide ones which cannot. SeecanDelete().- Returns:
TRUEif this AppInfo has been deleted- Since:
- 2.20
-
dup
-
equal
Checks if twoAppInfos are equal.Note that the check *may not* compare each individual field, and only does an identity check. In case detecting changes in the contents is needed, program code must additionally compare relevant fields.
- Parameters:
appinfo2- the secondAppInfo.- Returns:
TRUEif this AppInfo is equal toappinfo2.FALSEotherwise.
-
getCommandline
Gets the commandline with which the application will be started.- Returns:
- a string containing the
appinfo’scommandline, orNULLif this information is not available - Since:
- 2.20
-
getDescription
Gets a human-readable description of an installed application.- Returns:
- a string containing a description of the
application
appinfo,orNULLif none.
-
getDisplayName
Gets the display name of the application. The display name is often more descriptive to the user than the name itself.- Returns:
- the display name of the application for
appinfo,or the name if no display name is available. - Since:
- 2.24
-
getExecutable
Gets the executable’s name for the installed application.This is intended to be used for debugging or labelling what program is going to be run. To launch the executable, use
launch(org.gnome.glib.List<org.gnome.gio.File>, org.gnome.gio.AppLaunchContext)and related functions, rather than spawning the return value from this function.- Returns:
- a string containing the
appinfo’sapplication binaries name
-
getIcon
-
getId
Gets the ID of an application. An id is a string that identifies the application. The exact format of the id is platform dependent. For instance, on Unix this is the desktop file id from the xdg menu specification.Note that the returned ID may be
NULL, depending on how the this AppInfo has been constructed.- Returns:
- a string containing the application’s ID.
-
getName
Gets the installed name of the application.- Returns:
- the name of the application for
appinfo.
-
getSupportedTypes
Retrieves the list of content types thatappInfoclaims to support. If this information is not provided by the environment, this function will returnNULL.This function does not take in consideration associations added with
addSupportsType(java.lang.String), but only those exported directly by the application.- Returns:
- a list of content types.
- Since:
- 2.34
-
launch
default boolean launch(@Nullable List<File> files, @Nullable AppLaunchContext context) throws GErrorException Launches the application. Passesfilesto the launched application as arguments, using the optionalcontextto get information about the details of the launcher (like what screen it is on). On error,errorwill be set accordingly.To launch the application without arguments pass a
NULLfileslist.Note that even if the launch is successful the application launched can fail to start if it runs into problems during startup. There is no way to detect this.
Some URIs can be changed when passed through a GFile (for instance unsupported URIs with strange formats like mailto:), so if you have a textual URI you want to pass in as argument, consider using
launchUris(org.gnome.glib.List<java.lang.String>, org.gnome.gio.AppLaunchContext)instead.The launched application inherits the environment of the launching process, but it can be modified with
AppLaunchContext.setenv(java.lang.String, java.lang.String)andAppLaunchContext.unsetenv(java.lang.String).On UNIX, this function sets the
GIO_LAUNCHED_DESKTOP_FILEenvironment variable with the path of the launched desktop file andGIO_LAUNCHED_DESKTOP_FILE_PIDto the process id of the launched process. This can be used to ignoreGIO_LAUNCHED_DESKTOP_FILE, should it be inherited by further processes. TheDISPLAY,XDG_ACTIVATION_TOKENandDESKTOP_STARTUP_IDenvironment variables are also set, based on information provided incontext.- Parameters:
files- a list ofFileobjectscontext- the launch context- Returns:
TRUEon successful launch,FALSEotherwise.- Throws:
GErrorException- seeGError
-
launchUris
default boolean launchUris(@Nullable List<String> uris, @Nullable AppLaunchContext context) throws GErrorException Launches the application. This passes theuristo the launched application as arguments, using the optionalcontextto get information about the details of the launcher (like what screen it is on). On error,errorwill be set accordingly. If the application only supports one URI per invocation as part of their command-line, multiple instances of the application will be spawned.To launch the application without arguments pass a
NULLurislist.Note that even if the launch is successful the application launched can fail to start if it runs into problems during startup. There is no way to detect this.
- Parameters:
uris- a list of URIs to launch.context- the launch context- Returns:
TRUEon successful launch,FALSEotherwise.- Throws:
GErrorException- seeGError
-
launchUrisAsync
default void launchUrisAsync(@Nullable List<String> uris, @Nullable AppLaunchContext context, @Nullable Cancellable cancellable, @Nullable AsyncReadyCallback callback) Async version oflaunchUris(org.gnome.glib.List<java.lang.String>, org.gnome.gio.AppLaunchContext).The
callbackis invoked immediately after the application launch, but it waits for activation in case of D-Bus–activated applications and also provides extended error information for sandboxed applications, see notes forlaunchDefaultForUriAsync(java.lang.String, org.gnome.gio.AppLaunchContext, org.gnome.gio.Cancellable, org.gnome.gio.AsyncReadyCallback).- Parameters:
uris- a list of URIs to launch.context- the launch contextcancellable- aCancellablecallback- aGio.AsyncReadyCallbackto call when the request is done- Since:
- 2.60
-
launchUrisFinish
Finishes alaunchUrisAsync(org.gnome.glib.List<java.lang.String>, org.gnome.gio.AppLaunchContext, org.gnome.gio.Cancellable, org.gnome.gio.AsyncReadyCallback)operation.- Parameters:
result- the async result- Returns:
TRUEon successful launch,FALSEotherwise.- Throws:
GErrorException- seeGError- Since:
- 2.60
-
removeSupportsType
Removes a supported type from an application, if possible.- Parameters:
contentType- a string.- Returns:
TRUEon success,FALSEon error.- Throws:
GErrorException- seeGError
-
setAsDefaultForExtension
Sets the application as the default handler for the given file extension.- Parameters:
extension- a string containing the file extension (without the dot).- Returns:
TRUEon success,FALSEon error.- Throws:
GErrorException- seeGError
-
setAsDefaultForType
Sets the application as the default handler for a given type.- Parameters:
contentType- the content type.- Returns:
TRUEon success,FALSEon error.- Throws:
GErrorException- seeGError
-
setAsLastUsedForType
Sets the application as the last used application for a given type. This will make the application appear as first in the list returned bygetRecommendedForType(java.lang.String), regardless of the default application for that content type.- Parameters:
contentType- the content type.- Returns:
TRUEon success,FALSEon error.- Throws:
GErrorException- seeGError
-
shouldShow
default boolean shouldShow()Checks if the application info should be shown in menus that list available applications.- Returns:
TRUEif the this AppInfo should be shown,FALSEotherwise.
-
supportsFiles
default boolean supportsFiles()Checks if the application accepts files as arguments.- Returns:
TRUEif the this AppInfo supports files.
-
supportsUris
default boolean supportsUris()Checks if the application supports reading files and directories from URIs.- Returns:
TRUEif the this AppInfo supports URIs.
-