MyStream | Android Universal Social Network App Template + Web PHP version

MyStream | Android Universal Social Network App Template + Web PHP version

17 April 2018
• Added new Firebase dependencies in build.gradle(Module:app)
• Removed the '' implementation and updated all dependencies to the required ones only
• Added the 'google-services' classpath in the dependencies{} list in build.gradle(Project:)
classpath ''

• Added this Permission into Manifest.xml:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

• Updated the Documentation (connect your App to Firebase for FCM)
15 April 2018
• Updated to Android Studio 3.1.1
• Removed all dependencies of play-services | left only this one in build.gradle:
     implementation ''
11 April 2018
• Updated to Android Studio 3.1
• Updated 'compileSdkVersion' and  'targetSdkVersion' to 27 in build.gradle
• Replaced 'compile' with 'implementation' in build.gradle (Module: app)
• Updated classpath '' in build.gradle (Project:)
5 April 2018
• Commented out this piece of code in 'header.php':
   if ($_SERVER['HTTPS'] != "on") {
       $url = "https://". $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
       header("Location: $url");

and pasted it into 'index.php' and 'login.php'
• Replaced the code for showing videos in 'index.php', 'following.php', 'account.php', 'stream-details.php',  with the following code:
   <video id="media-video" controls style="max-width: 400px; border-radius: 8px;">
     <source src='.$videoURL.' type="video/mp4">
Mar 26th 2018
• Added a Website PHP version where you can browse, like and comment streams (the mobile app is required to post streams)
• Updated the User guide
Jan 20th 2018
• Added this line in the dependencies list of build.gradle (Module: app):
    compile 'com.squareup.okhttp3:okhttp:+'
Jan 15th 2017
• Added and files, and their relative .xml files in the 'layout' folder 
• Edited Intro.Java and in order to save an Array in the Parse Dashboard -> User class. This Array is called 'hasBlocked' and it's needed for blocking/unblocking users in the chats
• Added a 'messageButt()' in other_user_profile.xml and its relative code in
• Added a few strings in relative to the Messages, Inbox and User new classes for your Parse Dashboard

IMPORTANT: IF THIS IS AN UPDATE FOR YOU, you must first update your Android Studio project by comparing the files mentioned above with your old ones and update them, then you need to run the app and Sign Up as a test user, so the app will create a new column in the User class called 'hasBlocked'. 
Then enter your Parse Dashboard -> User class and find that new column, you'll see that all its cells show 'undefined' inside, so just type [] in all cells in order to initialize an empty array and avoid the app from crashing.
After that, you'll be able to test the chats and publish your update to the App Store. 
Jan 12th 2018
• Moved this line of code into the 'onClick()' instance of the 'case 7:' statement into (the Logout case):
      Configs.showPD("Logging out...", Settings.this);
Jan 7th 2018
• First release | Android Studio 3.x | Android 5.0+
• Backend with Parse SDK hosted on

MyStream is an app template where you can post anything you would like to show to the world, like pictures, videos, audio recordings, and stickers, as well as any text you want.
Users can comment, like and share Streams, as well as report them and their Users to the Admin. You, as the Admin of the app, need to daily check your own Parse Dashboard for reported content or users and take actions for them.

In addition to the mobile app, you can find a web PHP version where users can browse, comment and like Streams, check posts from the people they follow, report content and users. The website version has a javascript control that displays a different page in case of phones browsers detection, that page has the App Store badges where users can download the mobile app. Also, the website doesn’t allow people to post Streams, only the mobile version allow that.
You can check the demo website here:

Since its backend is by Parse you don’t have to buy any domain/hosting, there are NO PHP files to upload to a web server so you’ll save some money for server side.

MyStream is a native Android Studio project, Java/xml language, Universal, Parse SDK hosted on and super easy to customize.

About Parse SDK and back4app

Read this article for more info about back4app and Parse SDK:

Can I host Parse Server on my own server?

Yes, although I don’t provide support for the setup process, you can read the official Guide here:

What about free support for this template?

I can offer free support for bugs encountered in the original code. Instead, if you’ve edited the code and messed something up with it, I may apply some fee to fix it either via TeamViewer or by checking your app project files directly on my computer.

How do I rename the app’s package name?

Read this tutorial to learn how to rename a package name:

Should I use the latest version of Android Studio to edit this template?

Yes, I always update my apps to the latest version of the IDE and you also should make sure you’ve updated the Android Tools to their latest version of the Android SDK manager.

The demo APK crashes on startup

Make sure that the minimum Android version of your device is the one listed in the FEATURES section below. If the problem persists, please contact me through my profile’s contact form and send me the Logcat message of you get when the app crashes along with the steps you made to reproduce the crash. Please note that not all real devices print an error Logcat message, in this case just run the APK into the Android Studio’s emulator and you’ll surely get the red messages about your issue.

How do I remove AdMob interstitial ads?

You have to search for the following code in all java files -> onCreate() mthod, and just remove (or comment) it:
// INTERSTITIAL AD IMPLEMENTATION ------------------------------------
        final InterstitialAd interstitialAd = new InterstitialAd(this);
        AdRequest requestForInterstitial = new AdRequest.Builder().build();
        interstitialAd.setAdListener(new AdListener() {
            public void onAdLoaded() {
                Log.i("log-", "INTERSTITIAL is loaded!");
                if (interstitialAd.isLoaded()) {

  • Anoid Studio 3.x project – Java/xml
  • Universal – Android 5.0+
  • AdMob Interstitial ads
  • Works with Parse Server hosted on back4app
  • Push Notifications for likes and comments and Messages
  • Chat Messages section
  • Post Pictures, Videos, Audio recordings, Stickers and Text
  • Settings screen to edit your profile, check your Activity, app version, and much more
  • Terms of Use HTML file (to be edited)
  • Report inappropriate/offensive users, comments and posts to the Admin
  • PDF User Guide included
  • PSD icon graphics included
  • Easy to customize, well commented code

  • Apple Mac or Windows PC with their latest OS version installed
  • The latest version of Android Studio and some knowledge about its UI interface
  • Photoshop or any other image editor software
  • A Google Developer account to submit apps to the Play Store
  • An AdMob account to generate your own Interstitial UNIT ID
  • A free account on