• Breaking News

    Monday, December 9, 2019

    Android Dev - Weekly "who's hiring" thread!

    Android Dev - Weekly "who's hiring" thread!


    Weekly "who's hiring" thread!

    Posted: 09 Dec 2019 04:44 AM PST

    Looking for Android developers? Heard about a cool job posting? Let people know!

    Here is a suggested posting template:

    Company: <Best Company Ever>
    Job: [<Title>](https://example.com/job)
    Location: <City, State, Country>
    Allows remote: <Yes/No>
    Visa: <Yes/No>

    Feel free to include any other information about the job.

    submitted by /u/AutoModerator
    [link] [comments]

    Weekly Questions Thread - December 09, 2019

    Posted: 09 Dec 2019 02:56 AM PST

    This thread is for simple questions that don't warrant their own thread (although we suggest checking the sidebar, the wiki, our Discord, or Stack Overflow before posting). Examples of questions:

    • How do I pass data between my Activities?
    • Does anyone have a link to the source for the AOSP messaging app?
    • Is it possible to programmatically change the color of the status bar without targeting API 21?

    Important: Downvotes are strongly discouraged in this thread. Sorting by new is strongly encouraged.

    Large code snippets don't read well on reddit and take up a lot of space, so please don't paste them in your comments. Consider linking Gists instead.

    Have a question about the subreddit or otherwise for /r/androiddev mods? We welcome your mod mail!

    Also, please don't link to Play Store pages or ask for feedback on this thread. Save those for the App Feedback threads we host on Saturdays.

    Looking for all the Questions threads? Want an easy way to locate this week's thread? Click this link!

    submitted by /u/AutoModerator
    [link] [comments]

    Google Play Store review system hurts apps a lot

    Posted: 09 Dec 2019 06:24 AM PST

    Why we dropped Realm

    Posted: 08 Dec 2019 11:18 PM PST

    Android, Google and free content licenses. Who is to blame and what can be done?

    Posted: 09 Dec 2019 04:42 AM PST

    The story of another ban.

    Have you heard about bans on apps and developers in Google Play? This is just such a story. It's also an attempt to collect similar cases into one place and offer some kind of plan of action to prevent Google's unpredictable actions. It isn't fair to be banned for the legal use of free material. Personally, I like the idea of content licenses such as CC BY-SA, which permits any use, including commercial. Thanks to such licenses, we developers have websites like StackOverflow, where I've been elected to be the moderator. Unfortunately, companies like Google don't respect the ideas behind these licenses. Here's my story.

    It all started out fine. Our app for Android was created back in 2014 and had been living quite a normal life on Google Play. The app was a client to a site with texts. Nothing special, but people liked it, especially the option to download texts to the device and read them without the Internet. The app took the texts from http://scpfoundation.net. It's a website for joint literary creativity within a common fictional universe, quite well-known in some circles. Originally it appeared in the US (http://www.scp-wiki.net).Then their community translated thousands of articles from English into over 10 other languages. For posterity, it is important that all the content on the sites, the original and the translated ones, is distributed under a free Creative Commons Attribution-ShareAlike 3.0 License, which is located at the bottom of each page. This also applies to the logo of the website indicating the license, as seen here: https://en.m.wikipedia.org/wiki/File:SCP_Foundation_(emblem).svg on Wikipedia. The license permits any use of the material, including for commercial purposes, requiring only the indication of authorship and preservation of the original license in derivative works. This information, the source of the texts with license indication, was in both the description of the apps and in the apps themselves.

    For several years everything was running normally. Initially, it was decided to make all the features of the app free and to provide the possibility of voluntary donations through in-app subscriptions. However, it hardly brought in any profit at all. As a result, it was decided to monetize the most popular features of the app, compensating for the inconvenience to users by opening the source code. We also started to release versions for languages other than Russian. The original Russian version of the app even got into the top 10 of the "news and magazines" category of Google Play. While working on this project, I sort of taught myself programming, I tried new things, I made mistakes and I learned a lot. The important thing for this article is the development process. It was necessary to parse HTML on the server and then send it through API to all the sites with translations, instead of doing a separate app for each language with parsing on the client. I know this now, but 5 years ago I had very little idea of how to write servers. At the time, it didn't make much sense to me. My thinking was that if it ain't broke, don't fix it. Now I write API and plan to go onto iOS and hopefully one day return to Google Play.

    Then the warning lights started flashing, one after another. First Google Play began to reject new apps for copyright infringement. It was the same code, but for a site in a different language. I believe the new versions started to get rejected in the summer of 2017. However, each time it was possible to solve the issue by contacting their technical support service, which even suggested a special form, in which you can notify Google of the release of a new app by sending them any files needed. In my case, all I had to do was provide a link to the website and state that there was a license at the bottom that allowed the use of the content. After that, Google sent a letter saying that everything was okay. We were free to spread it and they had saved our information. But apps also got deleted (I'll talk later about the difference between removal and blocking).They'd be deleted for things like mentioning the names of other apps in the description, in particular, the name of one of the games based on the site. In theory, the license should allow it. But okay, I'm not a lawyer, maybe Google was right, and we just had to clean up what they didn't like and move on. But then they started removing apps due to the lack of privacy policy and processing of personal data. We were not alone in this situation. The problem was extensive. It seemed to have started around 2018.The network had several generators with such agreements, which were just enough to put on the website and add a link to the description of the app. Then there was Appodeal, where the app was removed due to problems in their SDK. But my mistake was that I had used the beta version, and Appodeal honestly warned about this problem the day before removal. I just had to update the SDK to the latest stable version, but I didn't manage to up it in time.

    Then things started going wrong with Google Play's app checks. I tried to release an update with a new version of Appodeal SDK. It was rejected for the same reason. On reflection, I decided that it was easier to just remove SDK, replacing its functionality (it was used for advertising with rewards) with similar functions from AdMob. Do you think it helped? I don't think so! This update was also rejected. But I'm a programmer. I'm cunning. I bypassed this bug on Google Play simply and gracefully. I posted an update in the form of an alpha version and raised it to the working version. And everything was fine. For a while.

    Then there was the time that our apps were removed because of violations of their advertising rules. As always, no examples, just a link to the voluminous rules for developers. After talking with their technical support service, I managed to find out that Google saw a problem with the links to my other apps in Google Play, which was just a list of similar apps in other languages. I mean, come on, I can't give links to my own apps on the same platform? Okay Google, if you want it that bad. Here you go. I released an update with "Ad " over each button-link. Problem solved.

    Then I got a letter stating, "After a recent review, SCP Foundation France On/Offline database fr (ru.dante.scpfoundation.fr) has been removed from Google Play." The French version of the app got banned. The reason given was, of all things, "Violation of Sexually Explicit Content policy." And again, nothing was said about what exactly Google had found objectionable. Perhaps, if you search really thoroughly amongst the thousands of texts, you might have found a couple of provocative images. Well, I didn't lose heart. Google probably knows what it's doing and I'm the one to blame. I put up with the loss of the app. It had a few users, but its loss didn't set us back too much. I began to update the rest of the apps, disabling of all images. At the same time, I began to look for information on app bans on the Internet. And then I started to suspect that this was not an accident. I wasn't the only one in this situation. It turned out that the network has many examples of app bans and even accounts bans.

    Let's digress and talk about the moderation system in Google Play. There are two or three types of sanctions against apps, depending on what you count. First, your app can be "Removed." In this case, the app will not be available for search and download on Google Play, but you have access to it in the developer console and can release an update with fixes. This is not considered a serious violation and does not affect the status of the account. A subset of this is "Update Rejection." In this case, the app is available for search and installation through Google Play, however, you should make changes to the planned update, as it violates something - something in the current form. Like in the first case, it does not affect the status of the account and nothing threatens you except for spoiling the mood and having some extra work to do. The last type of sanction is really bad. It's called "Suspended" and if you see a letter from Google with this word, prepare for the worst. The app isn't just removed from Google Play, it's removed permanently, with a ban on updating and even viewing the description, statistics and reviews in the developer console. The scary thing here isn't that Google makes you release a new version with a new package and re-recruit users, reviews, paying audience and explain to the users of the deleted version why everything stopped working. The scary thing is that you've got a label on you and the timer has started. Now you are an unreliable developer. Some people say that strikes get "rotten" after about six months. If get two more "Suspended " apps, you automatically cease to be an independent Android developer forever. Google explicitly prohibits the creation of a new developer account after the ban of the existing one and, given the market share of Google Play, the ban deprives the developer of a lot market access.

    Okay, back to the main plot. About three weeks later after the aforementioned app bans, I was at another meetup listening to some reports. And then I get two messages from Google. That's right, two more apps were banned. But this time, the two main ones, the Russian and the English versions. My first thought was, "Damn, I didn't have time to release the update with the pictures disabled." But that wasn't the reason. Here is a quote from the letter: "After review, SCP Foundation EN Database On / Offline, ru.dante.scpfoundation.eng, has been suspended and removed from Google Play as a strike policy because it violates the impersonation policy." In other words, Google decided that I was impersonating another person and using someone else's brand without permission. And here's the weird thing, all apps with "SCP Foundation" in their name were removed from the store. Except the ones I posted later, notifying Google of a free content license through the form I mentioned above. And not only were my apps removed, but other developers' apps were as well, about ten or more. I didn't count them at the time, so I don't know how many were removed and how many developers discovered that years of their work were thrown into a landfill by Google and their robots. Now you can't find any apps with "SCP Foundation" in their name in Google Play, which implies that none of them managed to resolve the situation with Google.

    In this case, I immediately issued appeals for both apps. I wrote that the apps use content under a free license and gave them links to the site where this is clearly written. However, in response, they wrote the following:

    For example, your app currently creates an unclear affiliation with SCP Foundation (http://www.scp-wiki.net/). If you are authorized by the site creator/content owner to redistribute the content in this manner, please reply this mail with verifiable documentation of content with the following examples: distribution agreement, authorization contract, or website domain ownership (PDF file). Kindly note that you may ask the content owner to reply for this email from a verifiable domain (@scpwiki.org) indicating your rights to use their brand asset and content.

    That means that they want me to provide them with documents confirming my right to use the content and the brand, as I understand it, both the name and the icon. They also needed the documents in the form of a response to this letter from the mail server of the site. In addition, for the Russian and English versions, they had two different domains in mind, one of which is a mirror of the second, although the Russian version did not take anything at all from these sites. They didn't care about the presence of a free license for content that allows its use, as they never even mentioning it. Although in other apps it was enough, going by the fact that other similar apps have not been removed. Okay Google, I tried to comply with this requirement of yours. I went on scp-wiki.net's private messaging system(like other sites with translations, it works on the Wikidot engine) and I wrote to other local administrators dealing with issues related to their content licenses. In the "Help" section of the site, it was written that they answer within a day. The first admin didn't answer me, I wrote the other one, then another, then another. I was answered by deathly silence. But I didn't give up. Although the first panic attacks began to occur, I still hoped for a solution to the problem within a week or two. Thinking about how many subscriptions to users would be canceled in this time, I browsed the net looking for information on how to make a document that the site administrators can send to Google. It looked like this. Meanwhile, I wrote a newsletter to our users through FCM, describing the situation. With that, I built a simple page on the site.

    One more digression. Let me tell you about the recent scandal in the SCP Foundation community related to content licensing, copyrights, threats, revelations and other things. I don't know if this stems from blocking apps. I'll just give you a list of facts and you can draw your own conclusions. It went more or less like this:

    1. An individual registered the trademark (hereinafter TM) on the name and logo of "SCP Foundation"

    2. Using this document, he began to remove videos from YouTube, communities in VK selling attributes, to demand deductions from sales.

    3. The victims appealed to the administrators of the Russian website.

    4. Admins released a long text, in both Russian and English, explaining the situation and the rights of content use under a free license.

    I know this individual. We'd worked together for some time, mutually advertising his artbooks and our app. But at one point we had a misunderstanding about the details of our agreement which resulted in a rather unpleasant conversation. Fortunately, we managed to resolve it. However during the conversation there were direct threats to remove the apps from the Google store due to the use of the TM.

    This case was in December 2018. And blocking all apps with "SCP Foundation" in their name occurred at the end of March. After two weeks, my developer account was blocked. Apparently, this was due to the fact that I had not received a response from the administrators of the English site and already had had three strikes on the account. The next day, the owner of the TM presented his own analogue version of our app. Everything seemed to check out and the reason for the block was clear. However, in a personal conversation with the owner of the TM, he denied my assumptions about his involvement and announced his intention to withdraw the TM. Google also refused to confirm my suspicions, ignoring my questions to technical support about any claims of copyright holders and the name and logo of the apps, insisting on the connection with the original site. You can decide if there is any connection.

    Update: After I started writing this article, the situation with the TM has worsened. He began to block communities in VK with its help and withdrew board games from the market . The administrators of the Russian site released a post explaining the situation and reporting that the court documents for the app were almost ready. They were also supported by the original website, which started collecting donations for legal expenses. As a result, the site administrators wrote a statement to the Russian Federal Antimonopoly Service. It's also worth mentioning the position of the technical support service of VK: they completely ignored any indication of the license and ban on the communities.

    But let's get back to Google. At some point I realized that there was only one way to win back the account and apps and that was to contact the admins of the original site and ask them to send an email with the ready-made document. Nothing could be easier, right? Initially, I had my doubts. Going by what I had known about the site and its administration system, they might not have their own mail server or even a desire to help me. But those were only my fears. And the task was so simple. I just had to contact them. But that turned out to be the biggest problem. No one answered my personal messages. And when one of the admins did finally answer, he said that he was busy and would answer later. Four (!) months later, I managed to get through to the administration, which said that I was not alone in this predicament. They have tried to help others with this and failed. Google just doesn't want to hear them. And they do not have their own mail server, so there is no technical possibility to send the letter I need. So the circle has been closed.

    Am I the only one?

    Is this an isolated case? As I've mentioned above, no, it's not. You can see for yourself by searching the web or visiting my website (https://dont-play-with-google.com/). I created it specifically to collect articles about cases of blocking apps and accounts in Google Play. Some of the articles on the site were translated into Russian, English and French with the help of my friends. Keep in mind that we are not professional translators and many articles are translated automatically and only slightly corrected. It is also possible to add new articles and translations into other languages. If you have links to other blocking cases, please, add them to the site as people should know. If you want to help the site, you can translate articles, correct typos or just code. The site consists of server and client sections. BackEnd is made on Spring (Gradle, Kotlin, Postgresql): https://github.com/mohaxspb/dont-play-with-gp-api. FrontEnd - Angular (TypeScript): https://github.com/mohaxspb/dont-play-with-gp-front. Don't judge the code too harshly as I specialize on Android. It's funny that in the process of creating the site I even had to edit the Angular compiler (https://github.com/angular/angular/pull/32760). PullRequests are welcomed on any subject either bugs or new opportunities. The list of tasks for the site's functionality can be found in Trello.

    Here are just a few examples of absurd app and account bans:

    • Bans of apps for copyright, such as mentioning the brand in the text of the description, and the subsequent ban of the account for connection with another account. Google won't even explain and it's impossible to restore anything. The account was used for disabled children's apps. https://dont-play-with-google.com/#/article/49
    • First the app, then the account was banned. Robots answer in the technical support service, but no details are given. After a post on Medium, a real person from Google saw the problem and the account was restored. Although they refused to reveal the reason for the ban. Take-home message: only the hype in the mass media helps in such situations. https://dont-play-with-google.com/#/article/52
    • The developer changed the name of his account to "Android app store" and got banned in just four seconds. Technical support reacted to his appeal. As always, no explanation. On the other channel they claimed that the name was legal. Take-home message: you won't be given any warnings. You will be banned by bots and there's nothing you can do about it. https://dont-play-with-google.com/#/article/66
    • An account for a company was banned for connection with another account. As it turned out, a colleague of this article's author was banned for intellectual property rights. For this link, the author was banned, as was the company's account where he worked. Once again, hype seemed to help to restore the account for the company, but not for the author or his colleagues. https://dont-play-with-google.com/#/article/64
    • Banning multiple apps for being "Misleading". Well, just ban the account once. Appeals led to nothing. However, after attention in the media, Google changed its mind, withdrew all claims and restored the apps with the account. Take-home message: only public complaint on the net works, and even the innocent can be banned. https://dont-play-with-google.com/#/article/67
    • There are many more examples, but I'm not here to list them all.

    In all these cases, the bans occur suddenly. The developer doesn't receive any warnings. In many cases, one can avoid getting their ban apps or accounts banned simply by changing one line in the name of the app (as in my case) or the name of the account (as in a case from the list above). However, instead of a warning with a proposal to correct the violation, you're just banned. And technical support either doesn't want to help you or demands unnecessary documents. I even had a case in which an automatic email from Google about a problem with the app contained broken links. Also, there are never any specifics in automatic letters, only the indication of the violated point of very vague rules and a reference to these rules. To at least get some hint to the cause of the ban, you need to contact the technical support service. And it doesn't always give any details, like in the case of the ban of the associated account, thereby depriving you of any opportunity to do something. Here's another example. A person got three bans on their app, all automatic. The first two bans were later canceled by technical support due to lack of violations, but the third ban appears not to be canceled.

    The worst part is that there is absolutely no way to talk to a real person, only through forms with a promise of a response by mail within 72 hours. And the mail is rumored to be answered by outsourcers from India. I've no problem with that, but as for the quality of the technical support service, I think I've already said enough. Compare this with Google Ads technical support. They're on the phone, in your native language, and they'll tell you that you need to put a comma in the text and lower the age rating. And they'll call back from a personal mobile number to check up on you. "Is your ad okay now?" I had the opportunity to compare the Google Play service and Google Ads. It's like night and day. But how did it happen? And does Google know about this issue?

    Of course they do. They even have special webinars for developers to clarify the details of the moderation system, complete with tips on how to avoid getting banned. And they conduct them in the developer's native language. And they announce these webinars on major IT resources like habr.com, the largest Russian-language IT resource. However, if you look at the recording of the webinar, you'll find that it was just someone reading a printout of the info available in Google Help. The Q&A was also just people reading from papers, with pre-prepared answers for prepared questions. It was all just to check a box. Google does not have any real desire to help developers. The video of the webinar has already been removed. It was here. There was also a chat in which dozens of developers, including me, tried to ask questions about blocks on our accounts and apps. We were answered with links to their rules. We were so upset, we tried to organize a Telegram chat. If you are interested in talking to colleagues about similar unfortunate events, welcome to our chat: https://t.me/android_developers_ban.

    On the other hand, in local markets, Google is trying to convince everyone how amazingly organized they are at helping developers launch, distributing and support apps. For example, you read about how well everything is organized. Google Play is constantly in touch, always willing to help with advice on any matter. Help with promotion, help in general, whatever you need. It's not just any old technical support, it's a waking dream. But when people went to the comments section and asked how to get this access in Google Play, they were all ignored. Obviously, it was just a promotional article designed to draw developers into the store.

    Who's to blame?

    How did it happen that the app store, which once allowed anyone put up any app of any quality without being afraid of it getting banned, has now turned into a place where you're terrified to post an update or even have the app on your account. Some say that bots check and can ban even unpublished apps. And you can't delete them if someone has the app installed. There are several reasons for that, as far as I understand:

    • First there's the maturing of the market. New major players interested in stable working moderation have come about. For example, to promptly remove forging apps. And it's easier, and more importantly, cheaper, to have bots do it.
    • For years, when most apps were downloaded in the store, it was simply impossible to manually check in a reasonable time and for reasonable pay. New apps and updates are published by the thousands every day.
    • The abundance of users and the monopoly on them, together with the lack of rigid moderation used to attract a lot of dubious personalities to the store, resulting in viruses, spyware and so on. And it's necessary to be protected from that stuff, and to constantly improve and protect the system.
    • Also, a number of people abused the capabilities of the Google Play API. Here's an example. A couple of people wrote a code that generates copies of simplistic games, changing only the name and pictures. The store was inundated with their games. They are not the only ones doing it because it's cost-effective.
    • Finally, there's pressure from state regulators to comply with a variety of laws regarding intellectual property rights, personal data and other things.

    My friends told me about companies involved in the creation of apps that just embed WebView, in order to redirect advertising traffic to users. Their only goal is to push their app in the store, one way or another, and earn at least some money. If the account is blocked, they simply switch to another one. They have a lot of tools to hide their digital tracks. They can avoid bans for linked accounts and there's even a market for selling developer accounts formed around them. It's clear that such abuses can be fought only with the help of robots. But the wrongdoers don't get punished, they just buy a new account for a few dollars. While ordinary developers suffer from friendly fire and lose their apps forever. Their apps are often their only source of income. But maybe these are unavoidable losses. It's just the unavoidable result of the reliable security we enjoy on Google Play. Unfortunately, no. There's constantly news about dozens of new malwares, viruses and other things popping up. Google can't keep users or developers safe.

    What conclusion can be drawn from all this? I'm sorry to say it, especially after so many years, but my conclusion seems to be that you can no longer consider Google Play to be a reliable platform for publishing apps. Or even as a platform where you can count on a reliable source of income. And the worst part is that there are simply no alternatives, unless you publish in China where Google is banned. And after your account is deleted, you might not be able to continue earning ad revenue while you're trying to recover it; unless, of course, as per Google's advice, you use their advertising SDK from AdMob. As soon as your app and/or account is banned, advertising in AdMob immediately becomes disabled. And it doesn't work the other way around. If you manage to restore the app/account you will have to write to AdMob technical support to restore the advertising display. You can use other advertising SDKs, but with new risks. I've already described a case of the failure in Google Play due to the availability of the SDK from Appodeal. The latter, by the way, also requires an account in AdMob and an app in Google Play and will seriously limit the display of ads or disable them altogether in case of problems with Google.

    As you can see, if you are going to build a serious business with distribution through Google Play, you need to be prepared for the fact that you might suddenly lose it all and your only hope is a possible hype in the media. Or you need to be a company the size of Facebook, then you will have the phone number of a manager at Google and you'll be able to solve any problem quickly and easily. And you won't be banned for the nude photos of your app users which they placed there themselves. But if you are not Facebook, you'll just be banned, because you violated the rules. And in this case, the developers managed to restore the app. After 3 months! But we all know that such a situation simply doesn't happen to large companies. As indicated in the first link, the ban was for a picture which was considered too racy for Google Play. However, the developers found the exact same picture in Twitch and other big apps. That means the rules are not only vague, but also do not apply to everyone. Some developers are "more equal" than others.

    So, can we improve the situation? I don't think we can. Google is a commercial company and their goal is to make money. There's nothing wrong with that, of course. But it means that the company will try to reduce costs and increase profits. And try to avoid lawsuits. As a result, it is easier and cheaper for them to ban apps and developers automatically than to hire a huge number of specialists who will personally understand the nuances and view each app, especially since, most likely, a very small percentage of developers and apps give the bulk of the revenue to Google Play. I have not seen detailed statistics on this topic, but I think it is unlikely that the situation here is very different from the situation with another Google service: YouTube. According to this study from Pex only 0.64% of videos get more than 100,000 views. And those videos generate 81.6% of all platform views. And since videos with a small number of views do not meet the criteria for enabling monetization, YouTube can remove 99% of all videos with almost no loss in profits and significantly reducing the cost of infrastructure for their storage. Moreover, at the time of writing YouTube plans to include a clause in their rules on December 10th, 2019, in which a user can be banned if he does not make a profit. "YouTube may terminate your access to or access through your Google account to all or part of the Service if it considers that providing you with access to the Service no longer makes commercial sense." I'm sure the same situation exists in Google Play. This way they can ban 99% of developers and apps and even increase profits. And don't even dream that the situation with technical support is better on YouTube. It's the same story. Automatic bans, unsubscribed by bots, inability to talk to a real tech support person. Unless of course you're one of the few who rake in significant profits for the service.

    What can be done?

    Is there any way to fix the situation? I'm not sure that's possible. Because it's more profitable for Google to leave the situation as it is than to spend huge amounts on a solution. It seems that we developers affected by Google bots can only write articles about it over and over again, hoping that someone at Google will read and manually restore our app or account. I think you shouldn't discount the thought that developers could unite and act as a united front to change the situation. People are wired this way. They think about such solutions when so many people face the same problem. Since I began to develop for Android, I had read articles about bans, but of course, I never thought that this would happen to me. I'm not a spammer. I don't write viruses and in general, I am always ready to wait on Google hand and foot. And I didn't think I would lose everything because I didn't change one word in the name of an app, especially since the Creative Commons Attribution-ShareAlike 3.0 Unported License permits it, as far as I understand. At least I successfully uploaded two of my ten apps to the Amazon store and they didn't have any questions about them.

    Here's a list of what I think any developer should do to minimize the damage from apps and accounts getting blocked. Not to avoid the damage, but to reduce it, because no one will warn you that the Google algorithm has found a problem.

    • Don't count on the fact that upon publishing and developing the app in Google Play, you will be able to stay there safely for a long time, living on income from advertising and sales. Sooner or later, you may get banned.
    • Don't use ads from AdMob. Or use it together with other SDKs that will not stop displaying ads when you're banned. You should be able to switch the source of advertising from the server.
    • You should also plan to launch your app in places other than Google Play. You need to do this anyway if you plan to launch in places like China.
    • If you offer in-app purchases, you need to use the same code in different stores. An imperfect example can be found in the source code of my own app. Different builds for different SDK embedded payments.
    • You need to create a website for your app so that you can direct the user to another store when Google bans you. There you will have to give a very long and complex instruction on how to install the app because Google strongly interferes with other stores on Android. Just think about how many problems had to be solved to uninstall the app from Google Play in the instructions here. The Google Play app directly prohibits uninstalling it, which kills all competition.
    • You need to build an in-app notification system in case of a ban. For example, you could use push notifications. I did that, but it didn't work perfectly. After the ban, users with Android version 7 and above did not receive notifications. Keep this code up to date. And pray that Google doesn't start to ban projects in Firebase, because alternative ways to send push notifications were actually squeezed out of the market after Google banned background processes in Android version 8 and above. They only allow push notifications in Firebase.
    • Never post apps that you're not going to use for earning money. This mainly applies to beginners as you risk getting banned even for an unpublished app project. Don't risk it.
    • Do not expect that the use of content under a free license will protect you. Google may still require you to confirm your rights to use the content. And you may have no one to get this confirmation from.
    • If you're an EU citizen, you can hope that the legislators will bring order to the market. Here is a draft law obliging sites to provide comprehensive information in case of a ban.

    Also, I would add to this list my thoughts on how the situation could be improved by creating competition. A while back Google was obliged to provide a choice of search engine at the first Android launch. It would be logical to oblige Google to also offer a choice of app store. Competition could emerge this way and, perhaps, Google would start to provide technical support on the phone (like in Russia, where Google has a strong competitor, Yandex) and stop automatic bans and let bots only be used for giving advice to moderators. Many problems could also be solved by changing the practice of banning without warning, so that the developer has the opportunity to fix something. Sometimes it is enough to change one word in the title to stay in good standing with the Google Play moderation system.

    I don't really believe I can do anything alone to improve the situation, but I won't forgive myself if I didn't try something, such as writing this article. Not expecting much, I sent an appeal to the FAS, the Russian Federal Antimonopoly Service. Please note, I am not a lawyer or a writer. I'm a programmer. So my application must be rather informal and generally naive, because it seems only the state can protect developers from Google.

    Appeal to Google.

    And finally, I would like to try to reach out to Google (in case someone from the company reads this article) and ask them to do something. For example:

    • Restore all the apps deleted in March 2019 (approximately 25-26) for all developers (including mine, with packages ru.dante.scpfoundation and ru.dante.scpfoundation.eng ) which had SCP Foundation in the name, because the use of the name and logo does not violate the terms of the Creative Commons Attribution-ShareAlike 3.0 License, and the site administration (http://www.scp-wiki.net/) and (http://scpwiki.org) from which there was a redirect not working at the time of writing and has no mail server to send a letter with permission to use what is already allowed. License information is available on all pages of this site, as well as all other affiliated sites with translations into other languages. The license is listed in the bottom of the site. Here's my appeal number for both apps: 3-7609000025842
    • Restore all developer accounts which, like my mine, were blocked as a result of blocking the apps that have `SCP Foundation ' in the name, because this is not a violation.
    • Allow developers to change the names of apps if Google believes that they are violating something, instead of banning apps and accounts immediately and without warning.
    • Stop automatic app bans, give at least a couple of days to make simple changes to correct violations, if any. As I've said, in my case it was enough to remove one word from the title.
    • Add the ability to specify the rights to the content, name and logo of apps when they are published, instead of subsequent checks by an unknown algorithm. Consider the rights granted by free licenses, including, for example, the Creative Commons Attribution-ShareAlike 3.0 License
    • Provide better technical support. If the developer needs to make an additional monthly or annual payment, instead of $25 for creating an account, this is a small price for peace of mind and reliability.

    I would be very happy if Google restored my apps and account, because I've invested a lot of work in them for more than five years. I hope at least someone will hear me. I hope that one day Google will be able to configure the moderation system so that developers will be safe from the situation when one day they find that themselves thrown out of the market by some program by a ridiculous mistake.

    submitted by /u/mohax-spb
    [link] [comments]

    A simple demo project based on Kotlin, MVVM architecture, coroutines, dagger, koin, and material designs & animations.

    Posted: 08 Dec 2019 09:31 PM PST

    More on the Missing SAF [CommonsWare]

    Posted: 09 Dec 2019 04:22 AM PST

    If we assume that the statement from the Google engineer is literally true, then we "know" whether SAF is available or not based on hardware type:

    android.hardware.type.television = no (even though some devices might actually support it)

    android.hardware.type.watch = no

    android.hardware.type.automotive = technically ¯\_(ツ)_/¯, but you hopefully are not trying to collect significant user input in this mode anyway

    others = technically ¯\_(ツ)_/¯, but since there is no explicit hardware type for handheld devices, we have to treat this as "yes"

    Unfortunately, AFAIK, this is not documented, and we do not know if this is really what Google wants and what device manufacturers are honoring. Plus, having the vast majority of devices covered by ¯\_(ツ)_/¯ does not inspire confidence. But, it is probably our best solution right now.

    https://commonsware.com/blog/2019/12/08/more-missing-saf.html

    submitted by /u/anemomylos
    [link] [comments]

    Developer-friendly guide to the Google "associated account ban" - advice to an iOS developer thinking about Android (misconceptions and alternatives for developers)

    Posted: 08 Dec 2019 09:11 AM PST

    I received a query from an iOS developer thinking about developing for Android - and his concerns about the notorious "associated account ban" practice (by Google).

    Since the exchange may be of wider use to new developers thinking about Android, I am providing it here - my reply and the comments others may post here should dispel some of the misconceptions about:

    • "associated account ban" what it is, and what it is not

    • where to distribute other than Google Play

    NOTE: I asked for permission from the iOS developer - which he granted - so that I could include his quoted text.

     

     

    Hi! I'm a junior iOS developer that was looking into branching into Android. If you don't mind, may I ask you some questions about the associated account ban issue?

    If you are just starting out with Android, i.e. this is your first account, you don't have to be concerned about the associated account ban issue.

    This only becomes relevant if you have a ban - then this ban is percolated to all the other accounts that Google can get it's hands on - ones which it finds "could be you".

    But sometimes it makes mistakes and can ban your friend, who may have opened his Google account from your computer, using your Wifi or from your home using your browser. There are examples of a company account being banned because their developer was banned, and the developer was banned not because of any fault of his, but because a friend of him had been banned some time ago for some previous infraction.

    These types of bans are possible to get reversed, but usually take a lot of effort, and usually not through usual channels - what seems to work is posting on medium dot com with a convincing blog post that gets viral, and then sometimes Google will reverse. There are cases of account reinstatements after one year, but often it can be a week to a month.

    In any case, this is needless disruption for a developer.

    Usually app bans/account bans DO NOT lead to a Google account ban - BUT some developers have expressed fears that this could happen. I can't think of a case like that - I have a vague feeling it may have happened once perhaps but can't be sure.

    But it DID definitely happen with Markiplier's YouTube fans - when he asked them to post emojis - and Google mass-banned a bunch of those who responded. Markiplier issued videos trying to get his followers' YouTube accounts restored - many were restored, but many weren't (may have been by now). This case was notable because these followers got their ENTIRE Google accounts - including Google Photos and other such personal stuff also account-banned. Thus was particularly egregious.

    The alternative to going viral with blog post is to have legal representation - your lawyer sends them a warning letter - supposedly that also works reasonably well. We don't have too many documented public cases for this - but many commenters on androiddev sub-reddit have said that even just having your lawyer send a letter to Google at legal@google.com (even though Google says it doesn't read e-mail sent there) - can get results. Again, I don't know of any particular cases that used this method - so cannot give much more insight on this type of appeal to Google.

     

     

    • Would it be possible to create a new identity separate from my old one? Suppose I buy a new phone and new phone number. Only use my mobile data and a new bank account to pay for stuff. The one thing I am not able to change is my location as I can't move out anytime soon.

    Developers have been trying to create new accounts after account bans for many years - at least from what one reads on various forums.

    So developers certainly do evade such bans - they seems to suggest using different internet WiFi, different Mac address for computer, different browser (so can't be tracked by cookies) and then using different credit card identity - so for example they may open an account in a relative's name.

    But if that relative is your wife - who resides in the same place - you are likely to be associated eventually - and wife could suffer the fate of the husband (and the associated ban wouldn't be removed even after divorce!).

     

     

    • Would not opening a developer account be enough to avoid having my colleagues getting associated banned? I have a housemate that got banned, while I was lucky to not share WiFi with him we still stay in the same location. Not only that I have logged into my personal accounts using the office computer and WiFi. I also roughly believe an ex-colleague there might get banned for his personal app on the Play Store in the future. Is it too late to do anything to migitate any association at this point?

    I don't know - we don't have the data to be that specific about whether a previous association between you and another dev (even before you actually created a Google account) would contribute towards yours (or his) associated ban.

    If you are very enthusiastic about your Android project - you can proceed without bothering about associated account ban - since it is unlikely to affect 100 percent of developers everytime, you could take the risk. If something does happen, you deal with it.

    But if it is low priority for you, and you would rather not endanger yourself, or your friends, you could consider not opening a Google developer account - and simply publishing on F-Droid, or even offering your APK via your website.

    It gets trickier if you were planning to show ads or have in-app purchases - for ads there are ad providers other than Google Admob - but often they ask where your app is published on Google Play. But possibly it may not be a requirement - for example they may accept that you are only published on F-Droid - though I don't know how this reduces "developer cred" in the eyes of the advertiser (and if they pay less for advertising on such apps).

    For in-app purchases, you could use payment processors like 2Checkout - which would allow you to process payments independent of any association with Google.

    2Checkout has wider country coverage, but you could try Square and the other credit card processing companies which focus more for U.S. developers.

    Some developers have anecdotally reported on androiddev sub-reddit that they are able to get good revenue for apps hosted on their website, and using third-party payment systems like 2Checkout etc. However, this will still be less than what you would get on Google Play Store (because of it's ubiquity/wide reach).

    EDIT: xda-developers also seems to have an app store - though you don't hear much about it on androiddev. But it may be a good alternative to F-Droid (if you don't want to open source your app):

    https://www.xda-developers.com/xda-labs/

    In addition to accessing the forums, Labs contains an app distribution platform for both hobbyist and professional developers. With support for Alpha, Beta, and Stable release channels, developers get the utmost in control. We also have built-in commerce for devs that want to earn money for their work, and unlike Play, where developers only get 70% of app revenue, XDA lets developers keep 100% through PayPal or Bitcoin payment methods.

     

     

    • Despite all this I still want to develop Android apps and share them with people. Is hosting the apk on my personal site the next best thing besides the Play Store? Are there any other app stores I could try? I know there's F-Droid but I don't plan open-sourcing my apps.

    Sorry if the message is too long. I don't see Google fixing this issue anytime soon and am just trying to find a way to publish Android apps despite the bleak situation.

    There are other android app stores, but because Google forces manufacturers to include Google Play (as part of the Google suite of apps) - it has so far ensured that Google Play remains the dominant store.

    Developers have anecdotally reported that they are able to get good sales on Amazon (not sure how it is these days) - overall volume is lower, but the revenue per user is higher, so the overall revenue is not bad, though still lower than for the version of their app on Google Play Store.

    As an example, the Chinese market is hard for non-Chinese developers to get into (because of the certification/documentation requirements) - but even if you do that, there are a number of app stores (4 or 5 of the big ones - none of them are particularly dominant over the other). This is obviously an outcome of the fact that Google exited the China market earlier (a decision they may regret, but it has also affected/led to app store fragmentation). Chinese app stores also often have clone apps - so you may find that there already is a version of your app there - sometimes with different ad provider inserted, and sometimes may even seem very different (I have never tried to install the APK from those stores, but have tried to examine the APK contents and found differences).

    So there is a negative to not having Google Play Store dominant - and there is a negative to Google Play Store being dominant as well!

    The Chinese market has another emerging player - Huawei - they have had an app store (App Gallery - which ships with every Huawei device as well - and which you can download using an APK as well).

    However, it has not gained much traction - the only reason I mention it is that it MAY become interesting in the future, since Huawei (for strategic/survival reasons) may have to invest in their app store at much higher levels now - in order to prepare for a future where they are totally excluded from the U.S. market, and cannot ship their devices with Google suite of apps (including Google Play Store).

    Given Huawei is a multi-billion dollar company with big ambitions - their whole company future is dependent on this one thing - and so it makes sense that among all the app store contestants, if there is one which will have added impetus behind it, it will be a Huawei App Store (App Gallery). However, their execution thus far has not been exceptional - App Gallery is still anemic in terms of revenue according to some anecdotal reports by developers on androiddev sub-reddit. However that could change in the future, if Huawei's App Gallery implements even more developer friendly processes (for signup, and for in-app purchasing etc.).

     

     

    iOS developer's response:

    Thank you very much for the detailed reply! I guess I would choose not to create a new identity and just publish outside the app store. Google's ability to track someone feels like more than what I could handle. Hopefully some kind of government regulation or third party competition would appear to knock some sense into Google in the near future. All the best to you and thanks again for your help!

     

     

    Asked for permission to use his quotes:

    Sure, no problem. Feel free to quote/rephrase it any way you like. It would definitely be a great help to others who are worried about the issue.

     

     

     



     

    FAQ - App Bans and Account Bans

     

     

    When does a lifetime account ban occur ?

    A Google Play account ban can occur due to an "associated account ban" - when Google thinks you are associated with someone else, and that someone else was awarded a lifetime account ban. That person's ban percolates to his associated accounts - i.e. you.

    Thus if you become lifetime account banned by Google - you become a threat to your acquaintances, and to your company (and should not be put in charge of their Google Play account once you are lifetime account banned).

    If you are not associated with anyone by Google - then your lifetime account ban will occur usually due to an accumulation of app bans.

    A Google Play developer account ban IS a lifetime ban.

     

     

    How many app bans are required to achieve a lifetime account ban ?

    The conventional wisdom some time ago was that 3 app bans were usually what triggered a lifetime account ban.

    But from anecdotal evidence from developers on androiddev, we now know:

    • a lifetime account ban can occur with just a single app ban (usually when you only have 1 app published)

    • a lifetime account ban can occur with your first Alpha app (one dev published his first app as an Alpha app - which Google considers as a published app - this app was banned for some reason - which triggered his lifetime account ban)

    • sometimes a lifetime account ban does not occur even after 3 app bans (happens if you have many apps - and some of them are seen by Google as high quality apps ?)

    • sometimes a lifetime account ban can occur as "one event" - these are based on a cascade of app bans (which happen in quick succession - usually because they all violate some recently introduced rule by Google) - this triggers an immediate lifetime account ban. As far as the developer is concerned, the series of events happens so fast that they seem to occur as one event (and there is no chance for them to stave off this attack).

    As with most Google "rules" which suffer from the info asymmetry that makes for a "moral hazard" in Google vs partner dealings (app dev/Adsense/YouTubers):

     

     

    Other observations about app bans and account bans

    • just as an app ban means a developer cannot get access to the information about his app (Description and other info he previously entered is now not visible to him), similarly if you are lifetime account banned, you lose access to the account information (which you may now need to mount a defence against Google's action).

    • app bans usually lack enough context for a developer to understand what caused them (this is an often cited observation by devs) - only in the simplest of cases is it clear what the cause was (in such cases Google DOES provlde a screenshot sometimes with the e-mail that makes clear (for example a button that takes user to your Google Play app page is not labelled). However, they will not tell you what to do to fix it - for this particular case, you need to add text "My Apps" or "Our Apps" to the button. So even in the cases where Google does give feedback about an app ban, it is so terse as to be more confusing than informative.

    • an app ban is labelled as "Suspended" in your Google Developer Console listing for your app. Sometimes an app can be labelled "Update Suspended" - this means you still have time to fix the problem and upload another APK. However, the amount of time you have to fix this is indeterminate and unspecified - the app could transition from "Update Suspended" to "Suspended" at any time without further notice (i.e. permanent app ban).

    • if an app has been labelled "Removed" it means it is not available to users now. However, it's removal is NOT affecting the standing of your account (i.e. it is not an app ban, and not contributing towards an account ban). However, I am not sure what happens if too many of your apps are "Removed" - does it lower your resistance to an account ban i.e. you become like the vulnerable single app developers mentioned above - vulnerable to an account ban because of a single further app ban ?

    • sometimes an app ban can be reversed - we posted on reddit, and also appealed to the e-mail address in the e-mail we got for the app ban. The app moved from "Suspended" (app ban) to "Removed" (i.e. not affecting account standing).

    • sometimes a lifetime account ban can be reversed - usually after you have posted on medium dot com, and the blog post goes viral. Sometimes the accounts are reinstated after a few days, sometimes weeks, and in one known case after a year!

    • lifetime account bans generally DO NOT lead to a ban on your Google account (i.e. will not affect your Google Photos etc.) - however, there have been cases with YouTube account bans which DID affect ALL the Google account content (including Google Photos):

    Markiplier's video asking Google that his followers's services still not restored:

    Androiddev post:

     

     

    Can a developer remove an app if he fears it's future ban may imperil his account ? (similarities to slave labor)

    Google does not provide a way for an app developer to remove his app from Google Play.

    A dev can only delete his app from Google Play IF it has been downloaded by zero users.

    A dev CAN "unpublish" his app (from Pricing & Distribution section), however the app remains visible to existing users, and users who have paid for the app.

    However apps you "unpublish" remain liable to app ban - for example an app that is no longer being updated by a developer can fall out of compliance with new rules which Google introduces each year (for example Google no longer honors it's "old apps will always work on newer android versions" compact - every year now apps have to comply with new targetSdkVersion requirements - which means older apps will break and eventually fall out of compliance at a steady pace).

    Devs do occasionally neglect their apps (they may be a hobbyist, a scientists, or simply is swamped by new projects, or the old app may no longer be profitable for them to maintain). However such developers may find that Google is forcing them to update their apps which they have no incentive to update any more.

    Google uses the threat of a lifetime account ban to COMPEL these developers to keep updating their apps (even when devs want not to do so).

    This is a type of compulsion - reminiscent of slave labor - where work is demanded without promise of compensation, or advantage to the worker.

    Essentially a developer once published on Google Play, faces the prospect of lifetime obligation to Google.

    This is odd, given that Google has in the past portrayed itself as an intermediary between the developer and the user, and not as the actual seller of the app - if so it seems odd that Google feels responsible for enforcing a relationship between developer and user. Perhaps Google now does act as actual seller/provider of apps - given that it now also collects taxes directly for more territories (?)

    Recently there was a comment by a Googler (which was also carried by androidpolice) that unpublishing an app will not expose an app to app ban, but that such apps will eventually be "Removed" (as in our app above - see second link at top - ie Removed apps don't put account standing at risk). The androidpolice artice was based on the comment, while the Google commenter was himself at odds with Google docs and said he will get back with others at Google about the discrepancy:

    Here is the original reddit comment that whole androidpolice article is using as source:

     

     

    What is an "associated account ban" ?

    Google's practice of lifetime bans for android developers - bans which percolate from acquaintance to acquaintance. In all likelihood a wife would face an immediate ban if her husband has already been banned - this association would survive divorce:

    An lifetime account ban thus risks making a pariah out of a dev as any potential employer may fear tainting their company account and the accompanying hassle if they hire a tainted developer. Thus the early crimes of a dev could become a lifelong "Scarlet Letter".

     

     

    Why is the Google appeal process flawed ?

    Android developers, once banned, are banned for life - and the only reliable way to get account reinstated is for developer to blog post on medium dot com and achieve virality. Then somehow Google is convinced that the developer's issue has been vetted (for free by the public!) and often restores the account. Even for restored accounts, developers often report that they never found out what led to the account ban in the first place.

    Essentially no human at Google can countermand a Google bot's decision - probably because it is a neural net or uses fuzzy rules to decide - which means it is not explainable in human terms.

    Google also uses secrecy argument - they need secrecy about why they did something to avoid being "gamed" - i.e. they are afraid their automated processes, once known would be easily exploited - as a loophole in an automated system could be used repeatedly, possibly without detection by Google. Google uses this secrecy argument for Adsense and it's other services as well - where Google partners can be banned without them knowing exactly why that happened.

    This developer has created a whole website to document the misbehavior of Google regarding his AdSense account:

    As with most Google "rules" which suffer from the info asymmetry that makes for a "moral hazard" in Google vs partner dealings (app dev/Adsense/YouTubers):

     

     

    Can a lifetime account ban (developer) lead to a GENERAL Google account ban (Google Photos etc.) ?

    Lifetime account bans generally DO NOT lead to a ban on your Google account (i.e. will not affect your Google Photos etc.) - however, there have been cases with YouTube account bans which DID affect ALL the Google account content (including Google Photos):

    Markiplier's video asking Google that his followers's services still not restored:

    Androiddev post:

     

     

    Threats to hobbyist devs and open source developers

    Right now the old advice to new devs to publish early with their test apps, and to do it with abandon is totally the wrong advice now. Generations of android tutorials are hopelessly out of tune with that old advice.

    The current conventional wisdom is to publish carefully, and sparingly with apps which can be supported by the new dev.

    If dev cannot commit to that, they should not post their hobbyists apps to Google Play. This is sound advice to the new hobbyist dev, and to the budding independent dev - if they value their lifetime cred with Google.

    It may surprise you but now even open source app developers are under threat - the other developers who copy and publish with their code are rendering the original app under threat.

     

     

    submitted by /u/stereomatch
    [link] [comments]

    Is there a way to exclude my app from the search results on specific keywords?

    Posted: 09 Dec 2019 07:16 AM PST

    So basically for some reason my app is now #1 search result for a keyword that's neither relevant, nor mentioned anywhere in the description or marketing materials for my app. This leads to people downloading it, not finding the described in the search query feature, and then submitting negative feedback because they didn't read the description or even swipe the screenshots. Now I'm trying to find a way to get my app excluded from search results on this term, has anyone experienced this? Any suggestions?

    submitted by /u/raisedbyowls
    [link] [comments]

    SurveyKit 1.0 released! An Android pendant to ResearchKit surveys on iOS

    Posted: 09 Dec 2019 07:34 AM PST

    How many Apps do you have and How much do you earn per day?

    Posted: 09 Dec 2019 07:23 AM PST

    Question: Forcing a viewpager to intercept touch event to achieve horizontal swipe on a RecyclerView

    Posted: 09 Dec 2019 06:38 AM PST

    Hey guys,

    I'm kind of stuck in an issue related to design and have no idea how to proceed or if its even possible.

    My activity has a tabbed swipeable ViewPager with 3 fragments. First fragment is a RecyclerView with multiple view types/view holders.

    One of those ViewHolders is a RecyclerView with 2 row grid layout manager inside which images auto scroll horizontally without user intervention.

    To stop users scroll/touch events I used a custom recyclerview and simply returned false while overriding onInterceptTouchEvent()

    What I want to achieve is to swipe horizontally to the second fragment when I try to scroll/swipe over this auto scrolling recyclerview. I've tried to place a view on top of recyclerview but that didn't work.

    Any idea how should I go about doing this? Thanks!

    submitted by /u/yashleo21
    [link] [comments]

    Custom promo code - now working?

    Posted: 09 Dec 2019 06:33 AM PST

    Using google billing 2.0.3 for subscriptions, I wanted to created promo codes for "black Friday".

    First, I tried a "Custom code", lets say it was "ABC2020" (*not the real code), which showed an "error message" that the code "didn't work" using through multiple accounts, some not registered as "test accounts".

    https://play.google.com/store?code=ABC2020
    https://play.google.com/redeem?code=ABC2020

    error message: " That code didn't work. Try again. If the code is for a specific app, redeem it in that app. "

    Then created "single use" promo codes, which worked fine.

    I did write to "support" (the week before Black Friday) from the dev-console (where the promo-codes are set), but I got no response.

    Any ideas what/why that is happening?

    Is anyone here using "custom promo code", which is working?

    submitted by /u/kinoseed
    [link] [comments]

    How to programmatically set your app as the default app for a USB device on Android

    Posted: 09 Dec 2019 06:02 AM PST

    Any idea why firebase is reporting app_clear_data before application upgrades?

    Posted: 09 Dec 2019 06:02 AM PST

    We just rolled out a limited test release of our new app to 100 or so users. We're seeing a very high number of app_clear_data events from firebase for these devices. It appears like this is happening right before the upgrade. It's happening often enough that I'm convinced it's not manual user behavior.

    I know there are "cleaner' apps out there that try and save space on the device but the percentage of devices where this was happening is very high. I'm wondering if Google or possibly someone else do security reviews might be doing some automated testing and we're just getting a lot of those users in the first few hours of a rollout.

    Any ideas?

    submitted by /u/evil_flanderz
    [link] [comments]

    Small / Indie Devs: How Do You Manage Sales Tax Responsibility?

    Posted: 09 Dec 2019 05:46 AM PST

    I've been researching this topic a lot lately, but have not had luck finding any recent (2019) discussion.

    As a hobbyist dev beginning to sell apps on the Play Store, I'm a bit intimidated by my responsibility to remit sales tax to certain countries / localities. I just don't believe I have the time or understanding to undertake this responsibility properly.

    I know that Google now is responsible for remitting sales tax in many states and countries per the link I posted above. My question is how to handle situations in which I, the developer, retain that responsibility. Should I:

    • Only release my app to locations where Google is responsible for remitting the sales tax
    • Actually learn how to properly handle this responsibility
    • Drop IAP's & paid apps to avoid the responsibility all together

    I'm just curious as to how others are doing this - I know I can't be the only solo dev out there concerned about this.

    Thanks for reading!

    submitted by /u/_devduck
    [link] [comments]

    How to build a popup like this and change text dynamically. I got the white drawable image.All I need is to pop up the view and access the variables of the textviews

    Posted: 08 Dec 2019 05:05 PM PST

    Conditional navigation and single event LiveData

    Posted: 09 Dec 2019 12:53 AM PST

    RecyclerView multi-selection

    Posted: 09 Dec 2019 04:32 AM PST

    Hello,
    I was wondering whether there is a go-to pattern for using a recyclerview item multiselection, where the selection status doesn't get lost on scrolling or configuration changes. I have seen that there is a new androidx library but it seems more complicated to use than actually implementing a list where you keep track of the selected items. Also i kept getting errors with it (java.lang.IllegalArgumentException at androidx.core.util.Preconditions.checkArgument(Preconditions.java)) without real explanation what the cause of the error was.

    I have found this article, which is somewhat similar to what my first idea was of implementing it:
    https://edgedevstudio.com/recyclerview-item-multi-select-tutorial/

    Is there any other way to do it, or would you say that the above article pattern would be correct to follow?

    submitted by /u/rogi19
    [link] [comments]

    Question: In design/preview mode, how can I show multiple configurations at the same time?

    Posted: 09 Dec 2019 12:26 AM PST

    Question: In design/preview mode, how can I show multiple configurations at the same time?

    Simple question. I remember this was possible in the past to show multiple configurations side by side.

    For example, I want to show how it looks in English locale vs Hebrew locale.

    I'm talking about this:

    https://preview.redd.it/67zjkcxoik341.png?width=1920&format=png&auto=webp&s=d9b81274ec95865e059811cd358b4c4fd4685ac2

    submitted by /u/AD-LB
    [link] [comments]

    Junior Android Developer with Java?

    Posted: 09 Dec 2019 03:35 AM PST

    Hey guys,

    I need an advice from the seniors here, so I am currently in a situation, where I got an offer letter to work as a Junior Android Developer, I just recently got my CS degree and was working for 1 year part-time as an Android Developer on a very custom project (a lot of C++ code and Android NDK) because of that I'm not too familiar with all the android architecture components, I mean I have a mock project with LiveData, Room, Coroutines (a bit of RxJava as well), Retrofit, ViewModels, Dagger2 etc. and I have went through the samples provided by Google, but I could not yet say that I feel 100% confident in using them.

    So the problem is, that the companies project is 99% in Java and MVP... (they are considering migration, but I'm not sure how long will it take) I feel much more confident in writing Kotlin code, I could do Java as well, but firstly I would need more time to implement same features and secondly I'm not sure if it is worth it for me as a Junior. Another thing is that, I would have to work with remote teams, so there would be no Android Devs in the office, only remotely and the communication would be via slack... I'm not too sure if this is the best place for my improvement, but the salary is attractive, what do you guys think I should do?

    TL;DR: I have an offer to work as a Junior Android Developer, but the project is 99% Java and MVP + all the communication with seniors and team would be remote.

    submitted by /u/codefluencer
    [link] [comments]

    How to play video back to back in a loop?

    Posted: 09 Dec 2019 12:03 AM PST

    public class MainActivity extends AppCompatActivity { int music_numbers[] = { R.raw.dash_dark,R.raw.dash_white}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final VideoView view = (VideoView) findViewById(R.id.VideoView); view.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { public void onCompletion(MediaPlayer mp) { view.start(); //need to make transition seamless. } }); view.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { mp.setLooping(true); } }); String path = "android.resource://" + getPackageName() + "/" + R.raw.dash_dark; view.setVideoURI(Uri.parse(path)); view.start(); } } 

    This is my code. Currently, I can make one song to play in a loop. But I have two video files in raw folder. I am supposed to play videos simultaneously?

    Thanks in advance:)

    submitted by /u/Xena_psk
    [link] [comments]

    Infographic - Advertising on Instagram basics

    Posted: 08 Dec 2019 11:41 PM PST

    Giveaway - USD $1000 in App Advertising for China market

    Posted: 09 Dec 2019 06:07 AM PST

    Programmatically dismiss ACTION_VIEW dialog once installation is complete

    Posted: 08 Dec 2019 11:33 AM PST

    Programmatically dismiss ACTION_VIEW dialog once installation is complete

    We have a process for allowing our users to manually update the application, because our devices do not have any app store. We download the apk from our servers and run:

    updateIntent = new Intent(Intent.ACTION_INSTALL_PACKAGE); updateIntent.setData(contentUri); updateIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 

    with the contentUri pointing to the location of our stored APK. As the installation is running, the app closes. Then, the following screen appears on completion:

    https://preview.redd.it/dpy9y6tqog341.png?width=301&format=png&auto=webp&s=2e2283dd6474ae2135edb5cfeae20042ad4bdb9b

    We restart our app immediately when we receive a MY_PACKAGE_REPLACED intent. The issue is that this screen remains in the background.

    How can I programmatically dismiss it?

    I have tried:

    // Dismiss all system ui messages Intent closeDialog = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS); sendBroadcast(closeDialog); 

    but it does not work for this type of dialog

    submitted by /u/fenwalt
    [link] [comments]

    Admob Ad Placement Policy

    Posted: 08 Dec 2019 08:17 AM PST

    Hi everyone!

    There is something that confuses everyone. Everyone I ask answers differently. And this topic is not explicitly stated in Google policies.
    The questions are like this;

    1. How Many Ads Can I Add for ScrollView

    (Scrollview into the *different IDs* with 4-5 banner ads can I add?)

    1. How Many Ads Can I Add to Each Screen Different ID's

    2. Is it True to Add Ads with Different ID's Into RecyclerView

    3. Is it Correct to Add Different Ads IDs for Each Activity

    4. It is Correct to Add Different Ads (IDs) to the Detail Page

    5. Is it Correct to Add Different Ads for Different Activity for Content

    6. Is it True to Show the Same Interstitials or Different Interstitials?

    7. What is the Best Way to Increase Advertising Revenue

    Note: All questions apply to Google Admob

    Thanks in advance!

    submitted by /u/emptyfiles
    [link] [comments]

    What is the best way to transfer big bitmap between two activities?

    Posted: 08 Dec 2019 02:33 PM PST

    No comments:

    Post a Comment