[Gear] Problem with Application API

[Gear] Problem with Application API

BY 02 May 2015 Web Application Development

Hello,

In my application I want to have launchers for all applications installed on the device. To do it I’m using code from Application API:

tizen.application.getAppsInfo(onGetApplicationsSuccess, onGetApplicationsError);

Gear S bug:

In the callback I have problem with first application – name is invalid, on my Gear S it’s should be “Running” but is “Settings” (it also depends on language set on device) . All other applications have correct data.

Gear 2 bug:

On Gear 2 I have problem with S Voice launcher. All launchers work well, but after clicking S Voice launcher nothing happens.

 

Do you know how to fix these bugs?

 

I have created sample application with similar functionality, so you can test it on your devices:

index.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
    <meta name="description" content="Application API - Sample App"/>

    <title>Application API - Sample App</title>

    <link rel="stylesheet" type="text/css" href="css/style.css"/>
    <script type="text/javascript" src="js/lib/jquery-2.0.0.min.js"></script>
    <script type="text/javascript" src="js/main.js"></script>
</head>

<body>
	<div id="ui-container"></div>
</body>
</html>

style.css

body {
    margin: 0px auto;
    overflow: hidden;
}

#ui-container {
    position: relative;
    font-size: 28px;
    
	width: 320px;
	height: 320px;
	background: #000000;
    color: #ffffff;
}
#ui-container > div {
	position: absolute;
	top: 0px;
	left: 0px;
	width: 320px;
	height: 60px;
}
#ui-container > div > img {
	position: absolute;
	top: 10px;
	left: 10px;
	width: 40px;
	height: 40px;
}
#ui-container > div > div {
	position: absolute;
	top: 10px;
	left: 60px;
	width: 200px;
	height: 40px;
	line-height: 40px;
}
@media all and (min-width: 360px) {

	#ui-container {
		width: 360px;
		height: 480px;
	}
	#ui-container > div {
		width: 360px;
	}
}

main.js

var applications = [];


// APPLICATIONS
function onGetApplicationsSuccess(tizenApps) {
    $('#ui-container').html('');
	applications = [];
	var top = 0;
	var appid = 0;
	for (var i = 0; i < tizenApps.length; i++) {
		if (tizenApps[i].show == true && tizenApps[i].id != 'com.samsung.windicator') {
			//console.log(tizenApps[i].name);
			//console.log(tizenApps[i]);
			applications.push({'name': tizenApps[i].name.toUpperCase(), 'id': tizenApps[i].id});
			
			var content = '<div data-appid="' + appid + '" style="top: ' + top + 'px;">';
			content += '<img src="' + tizenApps[i].iconPath + '"/>';
			content += '<div>' + tizenApps[i].name.toUpperCase() + '</div>';
			content += '</div>'
			
			$('#ui-container').append(content);
			top += 60;
			appid += 1;
		}
	}
	$('#ui-container > div').unbind('click');
	$('#ui-container > div').bind('click', function() {
		var appid = $(this).data('appid');
		console.log(appid);
		console.log(applications[appid]);
		launchApplication(applications[appid]);
	});
}
function onGetApplicationsError(error) {
    console.log(error.message);
}
function getInstalledApplications() {
	if (typeof tizen === 'object') {
		tizen.application.getAppsInfo(onGetApplicationsSuccess, onGetApplicationsError);
	}
}

// APPLICATION LAUNCH
function onLaunchSuccess() {
	console.log("Application has launched successfully");
}
function onLaunchError(error) {
    console.log(error.message);
}
function launchApplication(application) {
	if (typeof tizen === 'object')
		tizen.application.launch(application.id, onLaunchSuccess, onLaunchError);
}


window.onload = function () {
    // add eventListener for tizenhwkey
    document.addEventListener('tizenhwkey', function(e) {
        if(e.keyName == "back")
            tizen.application.getCurrentApplication().exit();
    });

    getInstalledApplications();
};

config.xml

<?xml version="1.0" encoding="UTF-8"?>
<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/ApplicationAPISampleApp" version="1.0.0" viewmodes="maximized">
    <tizen:application id="PfBU3yxI4g.ApplicationAPISampleApp" package="PfBU3yxI4g" required_version="2.2"/>
    <content src="index.html"/>
    <feature name="http://tizen.org/feature/screen.size.all"/>
    <icon src="icon.png"/>
    <name>ApplicationAPISampleApp</name>
    <tizen:privilege name="http://tizen.org/privilege/content.read"/>
    <tizen:privilege name="http://tizen.org/privilege/content.write"/>
    <tizen:privilege name="http://tizen.org/privilege/system"/>
    <tizen:privilege name="http://tizen.org/privilege/application.launch"/>
    <tizen:privilege name="http://tizen.org/privilege/application.info"/>
</widget>

 

Written by