+String
+_PackageAppInfoImpl::GetAppFeature(const String& key) const
+{
+ SysTryReturn(NID_APP, __appId.IsEmpty() == false, L"", E_SYSTEM, "__appId is empty.");
+
+ String value;
+ Database db;
+ String query;
+
+ query.Format(1024, L"SELECT AppFeature.VALUE FROM AppInfo, AppFeature WHERE AppFeature.ID = AppInfo.UNIQUE_ID and AppFeature.NAME = '%ls' and AppInfo.PACKAGE_NAME = '%ls'",
+ key.GetPointer(), __appId.GetPointer());
+
+ SysLog(NID_APP, "query = [%ls]", query.GetPointer());
+
+ result r = db.Construct(PACKAGE_DATABASE_FILE_NAME, "r");
+ SysTryReturn(NID_APP, r == E_SUCCESS, L"", E_SYSTEM, "db.Construct() failed. [%s]", GetErrorMessage(r));
+
+ std::unique_ptr< DbStatement > pStmt(_PackageManagerImpl::CreateStatementN(db, query));
+ SysTryReturn(NID_APP, pStmt, L"", E_SYSTEM, "CreateStatementN(%ls) failed. [%s]", query.GetPointer(), GetErrorMessage(GetLastResult()));
+
+ std::unique_ptr< DbEnumerator > pEnum(_PackageManagerImpl::ExecuteStatementN(db, pStmt.get()));
+ SysTryReturn(NID_APP, pEnum, L"", E_SYSTEM, "ExecuteStatementN() failed. [%s]", GetErrorMessage(GetLastResult()));
+
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pEnum->GetStringAt(0, value);
+ }
+
+ SysLog(NID_APP, "value = [%ls]", value.GetPointer());
+
+ return value;
+}
+