News download.

This commit is contained in:
jens 2021-02-20 02:30:06 +01:00
parent 1388e55ae7
commit 563d17890a
3 changed files with 98 additions and 30 deletions

View File

@ -8,6 +8,7 @@ import android.content.Intent;
import android.net.Uri; import android.net.Uri;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.os.StrictMode;
import android.view.MotionEvent; import android.view.MotionEvent;
import android.view.View; import android.view.View;
import android.view.View.OnClickListener; import android.view.View.OnClickListener;
@ -409,6 +410,8 @@ public class ActivityMainScreen extends ActivityGeneric
} }
else else
Miscellaneous.logEvent("i", "ActivityMainScreen", "Activity not running. No need to update.", 5); Miscellaneous.logEvent("i", "ActivityMainScreen", "Activity not running. No need to update.", 5);
activityMainScreenInstance.checkForNews();
} }
@Override @Override
@ -562,7 +565,9 @@ public class ActivityMainScreen extends ActivityGeneric
void checkForNews() void checkForNews()
{ {
String newsUrl = "https://server47.de/automation/appNews.php"; StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
String newsContent = Miscellaneous.downloadURL(newsUrl, null, null);
StrictMode.setThreadPolicy(policy);
News.downloadNews();
} }
} }

View File

@ -937,6 +937,23 @@ public class Miscellaneous extends Service
return result; return result;
} }
public static boolean restrictedFeaturesConfigured()
{
if(Rule.isAnyRuleUsing(Trigger.Trigger_Enum.activityDetection))
{
try
{
Class testClass = Class.forName(ActivityManageRule.activityDetectionClassPath);
}
catch (ClassNotFoundException e)
{
return true;
}
}
return false;
}
public static Element getXmlTree(String inputString) throws SAXException, IOException, ParserConfigurationException public static Element getXmlTree(String inputString) throws SAXException, IOException, ParserConfigurationException
{ {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

View File

@ -13,43 +13,89 @@ public class News
String headline; String headline;
String text; String text;
Calendar publishDate; Calendar publishDate;
String applicablePlattform;
public static ArrayList<News> extractNewsFromString() public static ArrayList<News> downloadNews()
{ {
String result = String newsUrl = "https://server47.de/automation/appNews.php";
Miscellaneous.messageBox(title, text, ActivityMainScreen.getActivityMainScreenInstance()); String newsContent = Miscellaneous.downloadURL(newsUrl, null, null);
Element homeControlRootElement = Miscellaneous.getXmlTree(inventoryString); ArrayList<News> returnList = new ArrayList<>();
if(homeControlRootElement.getAttribute("protocolVersion").equals(String.valueOf(requiredProtocolVersion)))
{
FullDataModel.getInstance().houseList = new ArrayList<HouseTemplate>();
// FullDataModel.getInstance().roomList = new ArrayList<RoomTemplate>();
FullDataModel.getInstance().nodeList = new ArrayList<NodeTemplate>();
// FullDataModel.getInstance().deviceList = new ArrayList<DeviceTemplate>();
FullDataModel.getInstance().commandsList = new ArrayList<CommandTemplate>();
FullDataModel.getInstance().deviceGroupList = new ArrayList<DeviceGroupTemplate>();
// FullDataModel.getInstance().sensorList = new ArrayList<SensorTemplate>();
FullDataModel.getInstance().ruleList = new ArrayList<RuleTemplate>();
FullDataModel.getInstance().userList = new ArrayList<UserTemplate>();
FullDataModel.getInstance().userDeviceList = new ArrayList<UserDeviceTemplate>();
NodeList responseElements = homeControlRootElement.getElementsByTagName("response"); try
Node responseElement = responseElements.item(0); {
Element automationRootElement = Miscellaneous.getXmlTree(newsContent);
NodeList nodeElementsHouses = homeControlRootElement.getElementsByTagName("houses"); NodeList newsEntriesElements = automationRootElement.getElementsByTagName("newsEntries");
for(int i = 0; i < nodeElementsHouses.getLength(); i++)
NodeList newsEntryElements = ((Element)newsEntriesElements.item(0)).getElementsByTagName("newsEntry");
for (int i = 0; i < newsEntryElements.getLength(); i++)
{ {
if(nodeElementsHouses.item(i).getNodeType() == Node.ELEMENT_NODE && (nodeElementsHouses.item(i).getParentNode().isSameNode(homeControlRootElement) | nodeElementsHouses.item(i).getParentNode().isSameNode(responseElement))) if (newsEntryElements.item(i).getNodeType() == Node.ELEMENT_NODE && (newsEntryElements.item(i).getParentNode().isSameNode(((Element)newsEntriesElements.item(0)))))
{ {
NodeList nodeElementsHousesInd = nodeElementsHouses.item(i).getChildNodes(); News newsEntry = new News();
for(int j = 0; j < nodeElementsHousesInd.getLength(); j++)
{ Element neEl = (Element)newsEntryElements.item(i);
Element houseElement = (Element) nodeElementsHousesInd.item(j); newsEntry.setHeadline(neEl.getElementsByTagName("headline").item(0).getTextContent());
HouseTemplate house = HouseTemplate.fromXmlStringStatic(Diverse.xmlToString(houseElement, true, false)); newsEntry.setText(neEl.getElementsByTagName("text").item(0).getTextContent());
FullDataModel.getInstance().houseList.add(house);
String publishDateString = neEl.getElementsByTagName("publishDate").item(0).getTextContent();
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(Long.parseLong(publishDateString));
newsEntry.setPublishDate(cal);
newsEntry.setText(neEl.getElementsByTagName("applicablePlattforms").item(0).getTextContent());
returnList.add(newsEntry);
} }
} }
} }
catch (Exception e)
{
e.printStackTrace();
}
return returnList;
}
public String getHeadline()
{
return headline;
}
public void setHeadline(String headline)
{
this.headline = headline;
}
public String getText()
{
return text;
}
public void setText(String text)
{
this.text = text;
}
public Calendar getPublishDate()
{
return publishDate;
}
public void setPublishDate(Calendar publishDate)
{
this.publishDate = publishDate;
}
public String getApplicablePlattform()
{
return applicablePlattform;
}
public void setApplicablePlattform(String applicablePlattform)
{
this.applicablePlattform = applicablePlattform;
} }
} }