How to make WhatsApp Status Downloader App In Android Studio?
Basic Concepts : When we watch WhatsApp status, all video & Image normally saved in a Hidden temporary file. So here we will copy the videos & images from hidden file to our permanent file by this App, this is the Download Operation by app. We also show here, share function with out download. Demo App
Step By Step flow the Articles, but don't Copy our Package name
Build.Gradli(Project:.....) code:
buildscript {
repositories {
google()
jcenter()
mavenCentral()
}
dependencies {
classpath "com.android.tools.build:gradle:4.1.1"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
maven{url 'https://jitpack.io'}
maven{url 'https://maven.google.com'}
maven { url 'https://google.bintray.com/exoplayer/' }
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
Add Some Dependency in Build.Gradle(Module.........):
implementation 'com.github.bumptech.glide:glide:4.12.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
implementation 'com.karumi:dexter:6.2.2'
implementation "androidx.recyclerview:recyclerview:1.1.0"
// For control over item selection of both touch and mouse driven selection
implementation "androidx.recyclerview:recyclerview-selection:1.1.0"
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"
implementation "androidx.cardview:cardview:1.0.0"
implementation 'commons-io:commons-io:2.4'
implementation 'org.apache.commons:commons-lang3:3.5'
implementation 'com.github.khizar1556.MKVideoPlayer:mkvideoplayer:0.1.5'
this file must look like this.
plugins {
id 'com.android.application'
}
android {
compileSdkVersion 30
buildToolsVersion "30.0.0"
defaultConfig {
applicationId "com.magica_technology.wpstatusdownloder"
minSdkVersion 24
targetSdkVersion 30
versionCode 1
versionName "1.0"
renderscriptSupportModeEnabled true
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
debuggable false
shrinkResources false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.google.android.material:material:1.2.1'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
testImplementation 'junit:junit:4.+'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
implementation 'com.github.bumptech.glide:glide:4.12.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
implementation 'com.karumi:dexter:6.2.2'
implementation "androidx.recyclerview:recyclerview:1.1.0"
// For control over item selection of both touch and mouse driven selection
implementation "androidx.recyclerview:recyclerview-selection:1.1.0"
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"
implementation "androidx.cardview:cardview:1.0.0"
implementation 'commons-io:commons-io:2.4'
implementation 'org.apache.commons:commons-lang3:3.5'
implementation 'com.github.khizar1556.MKVideoPlayer:mkvideoplayer:0.1.5'
}
In Manifest file you have to do some work:
Give All permissions in Manifest file.
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
Manifest file look like this.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.magica_technology.wpstatusdownloder">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<application
android:hardwareAccelerated="true"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.WpStatusDownloder">
<activity android:name=".SplashScreen">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MainActivity">
</activity>
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_path" />
</provider>
</application>
</manifest> Here we have a provider class show you have to create a provider_path.xml in Res folder by right click on res folder>New> Android Resources File and give name of this file "provider_path" and select Resources type "Xml" then Ok.
provider_path.xml Code:
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path
name="external_files"
path="." />
</paths>
Now All Set Up Completed ...
Now follow the All link to Copy All file Step by Step.
1)Create a empty Activity Named "SplashScreen" code
2)Create 3 blank Fragments named ''ImageFragment'', ''VideoFragment" and "GallaryFragment"
3) MainActivity and PageAdapter code
4) ImageFragment,Adapter,Model,item
we use same model and same iten in all Adapter
6) GallaryFragment and Adapter
Now Our App Completed
Keep Learning and Keep Growing
Thank you

