Enter a Google Play Store package name to auto-fill app details including name, description,
icons, and screenshots.
Fetch from Play Store
App Information
๐ Version
Manager
Upload New Version
Upload History
No uploads yet
Manage Existing Versions
Version
Code
Size
Download URL
Date
Action
No versions
found for this app.
๐ฅ Registered
Users & Premium Access
App
Premium API
You can grant users
global Premium Access to all your apps using the toggle buttons below. In your Android
app, check their premium status by sending a GET or POST request with their email:
GET https://easymobiletool.top/api/check-premium.php?email=user@example.com
Export the complete
apps-data.json file including any changes made through the admin panel.
Import Data
Import apps data from a
JSON file. This will override the current apps data.
๐ Analytics
Download Trends (Last 7 Days)
12Mon
18Tue
25Wed
22Thu
30Fri
40Sat
35Sun
Top Apps
Loading...
New User Registrations
User registration data will be
populated from the API
๐จ Send
Notification
Broadcast to All Users
๐จ User
Complaints
All Complaints
Loading complaints...
โ๏ธ Settings
Change Admin Password
Site Information
Site Title
Easy MoBile Tools
Domain
easymobiletool.top
Admin Panel Version
v2.0
Last Updated
-
In-App Auto Updater (SDK)
How It Works
You can force users of your non-Play Store apps to update directly from this dashboard. Here's
the flow:
1๏ธโฃ Your Android app silently pings the Check-Update API using its Package Name and
Version Code.
2๏ธโฃ If a newer version is found in the Admin Panel, it responds with force_update: true
and the Download URL.
3๏ธโฃ The App shows a non-dismissible Dialog to the user.
4๏ธโฃ When the user clicks "Update", the app downloads the new APK via Android's
DownloadManager and prompts the installation UI.
API Endpoint
URL:https://easymobiletool.top/api/check-update.php?package_name=YOUR_PACKAGE&version_code=100
Android Implementation Code (Java)
Copy and paste this code
into your Android App's MainActivity.java inside the onCreate method
to enable Auto-Updates without the Play Store.
// 1. Add permissions in AndroidManifest.xml:
// <uses-permission android:name="android.permission.INTERNET"/>
// <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
// 2. Put this method in your MainActivity and call it from onCreate():
private void checkAppUpdate() {
String packageName = getPackageName();
int versionCode = BuildConfig.VERSION_CODE;
String url = "https://easymobiletool.top/api/check-update.php?package_name=" + packageName + "&version_code=" + versionCode;
new Thread(() -> {
try {
HttpURLConnection connection = (HttpURLConnection) new java.net.URL(url).openConnection();
connection.setRequestMethod("GET");
java.io.BufferedReader reader = new java.io.BufferedReader(new java.io.InputStreamReader(connection.getInputStream()));
StringBuilder result = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) result.append(line);
reader.close();
org.json.JSONObject json = new org.json.JSONObject(result.toString());
if (json.getBoolean("success")) {
org.json.JSONObject data = json.getJSONObject("data");
if (data.getBoolean("update_available")) {
org.json.JSONObject latest = data.getJSONObject("latest_version");
String downloadUrl = latest.getString("download_url");
String changelog = latest.getString("changelog");
runOnUiThread(() -> showForceUpdateDialog(changelog, downloadUrl));
}
}
} catch (Exception e) { e.printStackTrace(); }
}).start();
}
private void showForceUpdateDialog(String changelog, String apkUrl) {
if (apkUrl == null || apkUrl.isEmpty()) return;
new android.app.AlertDialog.Builder(this)
.setTitle("๐ฏ New Update Available!")
.setMessage("You must update the app to continue using it.\n\n" + changelog)
.setCancelable(false) // Forces the user to update
.setPositiveButton("Download & Update", (dialog, which) -> {
downloadAndInstallApk(apkUrl);
android.widget.Toast.makeText(this, "Downloading update in background...", android.widget.Toast.LENGTH_LONG).show();
// Optional: finish(); to close app until updated
})
.show();
}
private void downloadAndInstallApk(String url) {
android.app.DownloadManager manager = (android.app.DownloadManager) getSystemService(DOWNLOAD_SERVICE);
android.net.Uri uri = android.net.Uri.parse(url);
android.app.DownloadManager.Request request = new android.app.DownloadManager.Request(uri);
request.setMimeType("application/vnd.android.package-archive");
request.setTitle("Downloading App Update");
String apkFileName = getPackageName() + "_update.apk";
request.setDestinationInExternalPublicDir(android.os.Environment.DIRECTORY_DOWNLOADS, apkFileName);
request.setNotificationVisibility(android.app.DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
manager.enqueue(request);
// Listen for download completion (Register this receiver in your Activity or Manifest)
android.content.BroadcastReceiver onComplete = new android.content.BroadcastReceiver() {
public void onReceive(android.content.Context ctxt, android.content.Intent intent) {
String apkFileName = getPackageName() + "_update.apk";
java.io.File file = new java.io.File(android.os.Environment.getExternalStoragePublicDirectory(android.os.Environment.DIRECTORY_DOWNLOADS), apkFileName);
android.content.Intent install = new android.content.Intent(android.content.Intent.ACTION_VIEW);
install.setDataAndType(androidx.core.content.FileProvider.getUriForFile(ctxt, getPackageName() + ".provider", file), "application/vnd.android.package-archive");
install.setFlags(android.content.Intent.FLAG_ACTIVITY_NEW_TASK | android.content.Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(install);
unregisterReceiver(this);
}
};
registerReceiver(onComplete, new android.content.IntentFilter(android.app.DownloadManager.ACTION_DOWNLOAD_COMPLETE));
}