Please use files that are attachment for work
Please see the attachment for ( A ).
(A) Select at least 2 of previous assignment projects, combine them
(B) Design and develop 3 or more features and add to the combined project, including layouts, buttons, functions, and etc.
(C) Make sure it compile and work.
(D) Run on the Emulator.
(E) Run on a real phone (optional)
(F) Take screenshots of either (D) or (E), and document the new features you added. Good to add various design diagrams.
(G) Zip the Android Studio project folder for this program.
(H) Please have a cover sheet with your name and the name of the assignment. Name the file following naming convention “ENTD322FinalProject_First_Last ”
(I) Upload the document and the zip file as attachments.
Note: for turn-ins, your project should be done using Android Studio, not Eclipse.
build.gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath ‘com.android.tools.build:gradle:3.4.1’
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
gradle.properties
# Project-wide Gradle settings.
# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx1536m
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
gradlew
#!/usr/bin/env sh
##############################################################################
##
## Gradle start up script for UN*X
##
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG=”$0″
# Need this for relative symlinks.
while [ -h “$PRG” ] ; do
ls=`ls -ld “$PRG”`
link=`expr “$ls” : ‘.*-> \(.*\)$’`
if expr “$link” : ‘/.*’ > /dev/null; then
PRG=”$link”
else
PRG=`dirname “$PRG”`”/$link”
fi
done
SAVED=”`pwd`”
cd “`dirname \”$PRG\”`/” >/dev/null
APP_HOME=”`pwd -P`”
cd “$SAVED” >/dev/null
APP_NAME=”Gradle”
APP_BASE_NAME=`basename “$0″`
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS=””
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=”maximum”
warn () {
echo “$*”
}
die () {
echo
echo “$*”
echo
exit 1
}
# OS specific support (must be ‘true’ or ‘false’).
cygwin=false
msys=false
darwin=false
nonstop=false
case “`uname`” in
CYGWIN* )
cygwin=true
;;
Darwin* )
darwin=true
;;
MINGW* )
msys=true
;;
NONSTOP* )
nonstop=true
;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n “$JAVA_HOME” ] ; then
if [ -x “$JAVA_HOME/jre/sh/java” ] ; then
# IBM’s JDK on AIX uses strange locations for the executables
JAVACMD=”$JAVA_HOME/jre/sh/java”
else
JAVACMD=”$JAVA_HOME/bin/java”
fi
if [ ! -x “$JAVACMD” ] ; then
die “ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation.”
fi
else
JAVACMD=”java”
which java >/dev/null 2>&1 || die “ERROR: JAVA_HOME is not set and no ‘java’ command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation.”
fi
# Increase the maximum file descriptors if we can.
if [ “$cygwin” = “false” -a “$darwin” = “false” -a “$nonstop” = “false” ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ “$MAX_FD” = “maximum” -o “$MAX_FD” = “max” ] ; then
MAX_FD=”$MAX_FD_LIMIT”
fi
ulimit -n $MAX_FD
if [ $? -ne 0 ] ; then
warn “Could not set maximum file descriptor limit: $MAX_FD”
fi
else
warn “Could not query maximum file descriptor limit: $MAX_FD_LIMIT”
fi
fi
# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS=”$GRADLE_OPTS \”-Xdock:name=$APP_NAME\” \”-Xdock:icon=$APP_HOME/media/gradle.icns\””
fi
# For Cygwin, switch paths to Windows format before running java
if $cygwin ; then
APP_HOME=`cygpath –path –mixed “$APP_HOME”`
CLASSPATH=`cygpath –path –mixed “$CLASSPATH”`
JAVACMD=`cygpath –unix “$JAVACMD”`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=””
for dir in $ROOTDIRSRAW ; do
ROOTDIRS=”$ROOTDIRS$SEP$dir”
SEP=”|”
done
OURCYGPATTERN=”(^($ROOTDIRS))”
# Add a user-defined pattern to the cygpath arguments
if [ “$GRADLE_CYGPATTERN” != “” ] ; then
OURCYGPATTERN=”$OURCYGPATTERN|($GRADLE_CYGPATTERN)”
fi
# Now convert the arguments – kludge to limit ourselves to /bin/sh
i=0
for arg in “$@” ; do
CHECK=`echo “$arg”|egrep -c “$OURCYGPATTERN” -`
CHECK2=`echo “$arg”|egrep -c “^-“` ### Determine if an option
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath –path –ignore –mixed “$arg”`
else
eval `echo args$i`=”\”$arg\””
fi
i=$((i+1))
done
case $i in
(0) set — ;;
(1) set — “$args0” ;;
(2) set — “$args0” “$args1” ;;
(3) set — “$args0” “$args1” “$args2” ;;
(4) set — “$args0” “$args1” “$args2” “$args3” ;;
(5) set — “$args0” “$args1” “$args2” “$args3” “$args4” ;;
(6) set — “$args0” “$args1” “$args2” “$args3” “$args4” “$args5” ;;
(7) set — “$args0” “$args1” “$args2” “$args3” “$args4” “$args5” “$args6” ;;
(8) set — “$args0” “$args1” “$args2” “$args3” “$args4” “$args5” “$args6” “$args7” ;;
(9) set — “$args0” “$args1” “$args2” “$args3” “$args4” “$args5” “$args6” “$args7” “$args8” ;;
esac
fi
# Escape application args
save () {
for i do printf %s\\n “$i” | sed “s/’/’\\\\”/g;1s/^/’/;\$s/\$/’ \\\\/” ; done
echo ” ”
}
APP_ARGS=$(save “$@”)
# Collect all arguments for the java command, following the shell quoting and substitution rules
eval set — $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS “\”-Dorg.gradle.appname=$APP_BASE_NAME\”” -classpath “\”$CLASSPATH\”” org.gradle.wrapper.GradleWrapperMain “$APP_ARGS”
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
if [ “$(uname)” = “Darwin” ] && [ “$HOME” = “$PWD” ]; then
cd “$(dirname “$0″)”
fi
exec “$JAVACMD” “$@”
gradlew.bat
@if “%DEBUG%” == “” @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if “%OS%”==”Windows_NT” setlocal
set DIRNAME=%~dp0
if “%DIRNAME%” == “” set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS=
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if “%ERRORLEVEL%” == “0” goto init
echo.
echo ERROR: JAVA_HOME is not set and no ‘java’ command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:”=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist “%JAVA_EXE%” goto init
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:init
@rem Get command-line arguments, handling Windows variants
if not “%OS%” == “Windows_NT” goto win9xME_args
:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2
:win9xME_args_slurp
if “x%~1” == “x” goto execute
set CMD_LINE_ARGS=%*
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
“%JAVA_EXE%” %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% “-Dorg.gradle.appname=%APP_BASE_NAME%” -classpath “%CLASSPATH%” org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
:end
@rem End local scope for the variables with windows NT shell
if “%ERRORLEVEL%”==”0” goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if not “” == “%GRADLE_EXIT_CONSOLE%” exit 1
exit /b 1
:mainEnd
if “%OS%”==”Windows_NT” endlocal
:omega
local.properties
## This file is automatically generated by Android Studio.
# Do not modify this file — YOUR CHANGES WILL BE ERASED!
#
# This file should *NOT* be checked into Version Control Systems,
# as it contains information specific to your local configuration.
#
# Location of the SDK. This is only used by Gradle.
# For customization when using a Version Control System, please read the
# header note.
sdk.dir=C\:\\Users\\hp\\AppData\\Local\\Android\\Sdk
settings.gradle
include ‘:app’
.gradle/5.1.1/executionHistory/executionHistory.bin
.gradle/5.1.1/executionHistory/executionHistory.lock
.gradle/5.1.1/fileChanges/last-build.bin
.gradle/5.1.1/fileContent/fileContent.lock
.gradle/5.1.1/fileHashes/fileHashes.bin
.gradle/5.1.1/fileHashes/fileHashes.lock
.gradle/5.1.1/fileHashes/resourceHashesCache.bin
.gradle/5.1.1/gc.properties
.gradle/5.1.1/javaCompile/classAnalysis.bin
.gradle/5.1.1/javaCompile/jarAnalysis.bin
.gradle/5.1.1/javaCompile/javaCompile.lock
.gradle/5.1.1/javaCompile/taskHistory.bin
.gradle/buildOutputCleanup/buildOutputCleanup.lock
.gradle/buildOutputCleanup/cache.properties
#Mon Jan 20 12:53:03 EAT 2020
gradle.version=5.1.1
.gradle/buildOutputCleanup/outputFiles.bin
.gradle/vcs-1/gc.properties
.idea/caches/build_file_checksums.ser
.idea/caches/gradle_models.ser
.idea/encodings.xml
.idea/gradle.xml
.idea/libraries/Gradle__android_arch_core_common_1_1_1_jar.xml
.idea/libraries/Gradle__android_arch_core_runtime_1_1_1_aar.xml
.idea/libraries/Gradle__android_arch_lifecycle_common_1_1_1_jar.xml
.idea/libraries/Gradle__android_arch_lifecycle_livedata_1_1_1_aar.xml
.idea/libraries/Gradle__android_arch_lifecycle_livedata_core_1_1_1_aar.xml
.idea/libraries/Gradle__android_arch_lifecycle_runtime_1_1_1_aar.xml
.idea/libraries/Gradle__android_arch_lifecycle_viewmodel_1_1_1_aar.xml
.idea/libraries/Gradle__com_android_support_animated_vector_drawable_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_appcompat_v7_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_asynclayoutinflater_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_cardview_v7_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_collections_28_0_0_jar.xml
.idea/libraries/Gradle__com_android_support_constraint_constraint_layout_1_1_3_aar.xml
.idea/libraries/Gradle__com_android_support_constraint_constraint_layout_solver_1_1_3_jar.xml
.idea/libraries/Gradle__com_android_support_coordinatorlayout_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_cursoradapter_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_customview_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_design_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_documentfile_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_drawerlayout_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_interpolator_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_loader_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_localbroadcastmanager_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_preference_v7_28_0_0_alpha1_aar.xml
.idea/libraries/Gradle__com_android_support_print_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_recyclerview_v7_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_slidingpanelayout_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_support_annotations_28_0_0_jar.xml
.idea/libraries/Gradle__com_android_support_support_compat_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_support_core_ui_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_support_core_utils_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_support_fragment_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_support_media_compat_28_0_0_alpha1_aar.xml
.idea/libraries/Gradle__com_android_support_support_v4_28_0_0_alpha1_aar.xml
.idea/libraries/Gradle__com_android_support_support_vector_drawable_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_swiperefreshlayout_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_test_espresso_espresso_core_3_0_2_aar.xml
.idea/libraries/Gradle__com_android_support_test_espresso_espresso_idling_resource_3_0_2_aar.xml
.idea/libraries/Gradle__com_android_support_test_monitor_1_0_2_aar.xml
.idea/libraries/Gradle__com_android_support_test_runner_1_0_2_aar.xml
.idea/libraries/Gradle__com_android_support_transition_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_versionedparcelable_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_viewpager_28_0_0_aar.xml
.idea/libraries/Gradle__com_google_code_findbugs_jsr305_2_0_1_jar.xml
.idea/libraries/Gradle__com_squareup_javawriter_2_1_1_jar.xml
.idea/libraries/Gradle__javax_inject_javax_inject_1_jar.xml
.idea/libraries/Gradle__junit_junit_4_12_jar.xml
.idea/libraries/Gradle__net_sf_kxml_kxml2_2_3_0_jar.xml
.idea/libraries/Gradle__org_hamcrest_hamcrest_core_1_3_jar.xml
.idea/libraries/Gradle__org_hamcrest_hamcrest_integration_1_3_jar.xml
.idea/libraries/Gradle__org_hamcrest_hamcrest_library_1_3_jar.xml
.idea/misc.xml
.idea/modules.xml
.idea/runConfigurations.xml
.idea/vcs.xml
.idea/workspace.xml
com.android.support
appcompat-v7
28.0.0
Google,Android Repository
com.android.support
design
28.0.0
Google,Android Repository
com.android.support
preference-v7
28.0.0
Google,Android Repository
com.android.support.constraint
constraint-layout
2.0.0-beta4
Google
junit
junit
4.13
JCenter
com.android.support.test
runner
1.0.2
Google,Android Repository
com.android.support.test.espresso
espresso-core
3.0.2
Google,Android Repository
1579516949364
1579513921153
1579513921153
Android API 26 Platform
app/.gitignore
/build
app/app.iml
generateDebugSources
app/build.gradle
apply plugin: ‘com.android.application’
android {
compileSdkVersion 28
defaultConfig {
applicationId “com.rkb.birthdaywidget”
minSdkVersion 15
targetSdkVersion 28
versionCode 1
versionName “1.0”
testInstrumentationRunner “android.support.test.runner.AndroidJUnitRunner”
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile(‘proguard-android-optimize.txt’), ‘proguard-rules.pro’
}
}
}
dependencies {
implementation fileTree(dir: ‘libs’, include: [‘*.jar’])
implementation ‘com.android.support:appcompat-v7:28.0.0’
implementation ‘com.android.support.constraint:constraint-layout:1.1.3’
implementation ‘com.android.support:design:28.0.0’
testImplementation ‘junit:junit:4.12’
androidTestImplementation ‘com.android.support.test:runner:1.0.2’
androidTestImplementation ‘com.android.support.test.espresso:espresso-core:3.0.2’
implementation ‘com.android.support:preference-v7:28.0.0-alpha1’
}
app/proguard-rules.pro
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
app/src/androidTest/java/com/rkb/birthdaywidget/ExampleInstrumentedTest.java
app/src/androidTest/java/com/rkb/birthdaywidget/ExampleInstrumentedTest.java
package
com
.
rkb
.
birthdaywidget
;
import
android
.
content
.
Context
;
import
android
.
support
.
test
.
InstrumentationRegistry
;
import
android
.
support
.
test
.
runner
.
AndroidJUnit4
;
import
org
.
junit
.
Test
;
import
org
.
junit
.
runner
.
RunWith
;
import
static
org
.
junit
.
Assert
.
*
;
/**
* Instrumented test, which will execute on an Android device.
*
*
@see
Testing documentation
*/
@
RunWith
(
AndroidJUnit4
.
class
)
public
class
ExampleInstrumentedTest
{
@
Test
public
void
useAppContext
()
{
// Context of the app under test.
Context
appContext
=
InstrumentationRegistry
.
getTargetContext
();
assertEquals
(
“com.rkb.birthdaywidget”
,
appContext
.
getPackageName
());
}
}
app/src/main/AndroidManifest.xml
app/src/main/java/com/rkb/birthdaywidget/BDayWidgetModel.java
app/src/main/java/com/rkb/birthdaywidget/BDayWidgetModel.java
package
com
.
rkb
.
birthdaywidget
;
import
android
.
content
.
Context
;
import
android
.
content
.
SharedPreferences
;
import
java
.
util
.
Calendar
;
import
java
.
util
.
Date
;
import
java
.
util
.
concurrent
.
TimeUnit
;
public
class
BDayWidgetModel
{
public
Integer
iid
;
private
String
Bday
;
private
String
name
;
public
static
BDayWidgetModel
retrieveModel
(
Context
context
,
Integer
widgetid
){
SharedPreferences
sharedPref
=
context
.
getSharedPreferences
(
context
.
getString
(
R
.
string
.
pref_file_key
),
Context
.
MODE_PRIVATE
);
String
bday
=
sharedPref
.
getString
(
widgetid
.
toString
()
+
“_birthday”
,
“01/01/1970”
);
String
name
=
sharedPref
.
getString
(
widgetid
.
toString
()
+
“_name”
,
“John Doe”
);
return
new
BDayWidgetModel
(
widgetid
,
name
,
bday
);
}
public
void
savePreferences
(
Context
context
){
//save iid, name, Bday
SharedPreferences
sharedPref
=
context
.
getSharedPreferences
(
context
.
getString
(
R
.
string
.
pref_file_key
),
Context
.
MODE_PRIVATE
);
SharedPreferences
.
Editor
editor
=
sharedPref
.
edit
();
editor
.
putString
(
iid
.
toString
()
+
“_birthday”
,
Bday
);
editor
.
putString
(
iid
.
toString
()
+
“_name”
,
name
);
editor
.
commit
();
}
public
void
removePrefs
(
Context
context
){
SharedPreferences
sharedPref
=
context
.
getSharedPreferences
(
context
.
getString
(
R
.
string
.
pref_file_key
),
Context
.
MODE_PRIVATE
);
SharedPreferences
.
Editor
editor
=
sharedPref
.
edit
();
editor
.
remove
(
iid
.
toString
()
+
“_birthday”
);
editor
.
remove
(
iid
.
toString
()
+
“_name”
);
editor
.
commit
();
}
public
static
void
clearAllPreferences
(
Context
context
){
SharedPreferences
sharedPref
=
context
.
getSharedPreferences
(
context
.
getString
(
R
.
string
.
pref_file_key
),
Context
.
MODE_PRIVATE
);
SharedPreferences
.
Editor
editor
=
sharedPref
.
edit
();
editor
.
clear
();
editor
.
commit
();
}
public
BDayWidgetModel
(
Integer
iid
,
String
name
,
String
dob
)
{
this
.
iid
=
iid
;
this
.
name
=
name
;
this
.
Bday
=
dob
;
}
public
Long
howManyDays
(){
Date
date1
=
Calendar
.
getInstance
().
getTime
();
Date
date2
=
Utils
.
getBirthDay
(
Bday
);
if
(
date2
==
null
){
return
0L
;
}
//this year birthday
date2
.
setYear
(
date1
.
getYear
());
//due next year, it has pass
if
(
date2
.
getTime
()
<
date1
.
getTime
()
){
date2
.
setYear
(
date1
.
getYear
()
+
1
);
}
long
diff
=
date2
.
getTime
()
-
date1
.
getTime
();
return
TimeUnit
.
DAYS
.
convert
(
diff
,
TimeUnit
.
MILLISECONDS
);
}
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
String
getBday
()
{
return
Bday
;
}
}
app/src/main/java/com/rkb/birthdaywidget/BDayWidgetProvider.java
app/src/main/java/com/rkb/birthdaywidget/BDayWidgetProvider.java
package
com
.
rkb
.
birthdaywidget
;
import
android
.
appwidget
.
AppWidgetManager
;
import
android
.
appwidget
.
AppWidgetProvider
;
import
android
.
content
.
ComponentName
;
import
android
.
content
.
Context
;
import
android
.
content
.
pm
.
PackageManager
;
public
class
BDayWidgetProvider
extends
AppWidgetProvider
{
private
static
final
String
tag
=
"BDayWidgetProvider"
;
public
void
onUpdate
(
Context
context
,
AppWidgetManager
appWidgetManager
,
int
[]
appWidgetIds
)
{
final
int
N
=
appWidgetIds
.
length
;
for
(
int
i
=
0
;
i
<
N
;
i
++
)
{
int
appWidgetId
=
appWidgetIds
[
i
];
updateAppWidget
(
context
,
appWidgetManager
,
appWidgetId
);
}
}
public
void
onDeleted
(
Context
context
,
int
[]
appWidgetIds
)
{
final
int
N
=
appWidgetIds
.
length
;
for
(
int
i
=
0
;
i
<
N
;
i
++
)
{
BDayWidgetModel
bwm
=
BDayWidgetModel
.
retrieveModel
(
context
,
appWidgetIds
[
i
]);
bwm
.
removePrefs
(
context
);
}
}
public
void
onEnabled
(
Context
context
)
{
BDayWidgetModel
.
clearAllPreferences
(
context
);
PackageManager
pm
=
context
.
getPackageManager
();
pm
.
setComponentEnabledSetting
(
new
ComponentName
(
"com.rkb.birthdaywidget"
,
".BDayWidgetProvider"
),
PackageManager
.
COMPONENT_ENABLED_STATE_ENABLED
,
PackageManager
.
DONT_KILL_APP
);
}
public
void
onDisabled
(
Context
context
)
{
BDayWidgetModel
.
clearAllPreferences
(
context
);
PackageManager
pm
=
context
.
getPackageManager
();
pm
.
setComponentEnabledSetting
(
new
ComponentName
(
"com.rkb.birthdaywidget"
,
".BDayWidgetProvider"
),
PackageManager
.
COMPONENT_ENABLED_STATE_DISABLED
,
PackageManager
.
DONT_KILL_APP
);
}
private
void
updateAppWidget
(
Context
context
,
AppWidgetManager
appWidgetManager
,
int
appWidgetId
)
{
BDayWidgetModel
bwm
=
BDayWidgetModel
.
retrieveModel
(
context
,
appWidgetId
);
if
(
bwm
==
null
)
{
return
;
}
MainActivity
.
updateAppWidget
(
context
,
appWidgetManager
,
bwm
);
}
}
app/src/main/java/com/rkb/birthdaywidget/MainActivity.java
app/src/main/java/com/rkb/birthdaywidget/MainActivity.java
package
com
.
rkb
.
birthdaywidget
;
import
android
.
app
.
Activity
;
import
android
.
app
.
PendingIntent
;
import
android
.
appwidget
.
AppWidgetManager
;
import
android
.
content
.
Context
;
import
android
.
content
.
Intent
;
import
android
.
net
.
Uri
;
import
android
.
os
.
Bundle
;
import
android
.
support
.
v7
.
app
.
AppCompatActivity
;
import
android
.
util
.
Log
;
import
android
.
view
.
View
;
import
android
.
widget
.
Button
;
import
android
.
widget
.
EditText
;
import
android
.
widget
.
RemoteViews
;
public
class
MainActivity
extends
AppCompatActivity
{
private
static
String
tag
=
"MainActivity"
;
private
int
mAppWidgetId
=
AppWidgetManager
.
INVALID_APPWIDGET_ID
;
@
Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
setContentView
(
R
.
layout
.
edit_bday_widget
);
setupButton
();
//setup the save button
//Get the widget instanceid from the intent extra
Intent
intent
=
getIntent
();
Bundle
extras
=
intent
.
getExtras
();
if
(
extras
!=
null
)
{
mAppWidgetId
=
extras
.
getInt
(
AppWidgetManager
.
EXTRA_APPWIDGET_ID
,
AppWidgetManager
.
INVALID_APPWIDGET_ID
);
}
else
{
Log
.
d
(
tag
,
"Null starting intent"
);
}
}
private
void
setupButton
()
{
Button
b
=
(
Button
)
this
.
findViewById
(
R
.
id
.
bdw_button_update_bday_widget
);
b
.
setOnClickListener
(
new
Button
.
OnClickListener
()
{
public
void
onClick
(
View
v
)
{
saveConfiguration
(
v
);
}
});
}
//finish the activity.
private
void
saveConfiguration
(
View
v
)
{
String
name
=
this
.
getName
();
String
date
=
this
.
getDate
();
if
(
Utils
.
validateDate
(
date
)
==
false
)
{
this
.
setDate
(
"wrong date:"
+
date
);
return
;
}
if
(
this
.
mAppWidgetId
==
AppWidgetManager
.
INVALID_APPWIDGET_ID
)
{
Log
.
d
(
tag
,
"INVALID WIDGET ID"
);
return
;
}
updateAppWidgetLocal
(
name
,
date
);
Intent
resultValue
=
new
Intent
();
resultValue
.
putExtra
(
AppWidgetManager
.
EXTRA_APPWIDGET_ID
,
mAppWidgetId
);
setResult
(
RESULT_OK
,
resultValue
);
finish
();
}
private
String
getName
()
{
EditText
nameEdit
=
(
EditText
)
this
.
findViewById
(
R
.
id
.
bdw_bday_name_id
);
String
name
=
nameEdit
.
getText
().
toString
();
return
name
;
}
private
String
getDate
()
{
EditText
dateEdit
=
(
EditText
)
this
.
findViewById
(
R
.
id
.
bdw_bday_date_id
);
String
dateString
=
dateEdit
.
getText
().
toString
();
return
dateString
;
}
private
void
setDate
(
String
errorDate
)
{
EditText
dateEdit
=
(
EditText
)
this
.
findViewById
(
R
.
id
.
bdw_bday_date_id
);
dateEdit
.
setText
(
""
);
dateEdit
.
setHint
(
"month/day/year"
);
dateEdit
.
requestFocus
();
}
private
void
updateAppWidgetLocal
(
String
name
,
String
dob
)
{
//Create an object to hold the data: widgetid, name, and dob
BDayWidgetModel
m
=
new
BDayWidgetModel
(
mAppWidgetId
,
name
,
dob
);
//Create the view and send it to the home screen
updateAppWidget
(
this
,
AppWidgetManager
.
getInstance
(
this
),
m
);
//Use the data model object to save the id, name, and dob in prefs
m
.
savePreferences
(
this
);
}
//A key method where a lot of magic happens
public
static
void
updateAppWidget
(
Context
context
,
AppWidgetManager
appWidgetManager
,
BDayWidgetModel
widgetModel
)
{
//Construct a RemoteViews Object from the widget layout file
RemoteViews
views
=
new
RemoteViews
(
context
.
getPackageName
(),
R
.
layout
.
bday_widget
);
//Use the control ids in the layout to set values on them.
//Notice that these methods are limited and available on the
//on the RemoteViews object. In other words we are not using the
//TextView directly to set these values.
views
.
setTextViewText
(
R
.
id
.
bdw_w_name
,
widgetModel
.
getName
()
+
":"
+
widgetModel
.
iid
);
views
.
setTextViewText
(
R
.
id
.
bdw_w_date
,
widgetModel
.
getBday
());
//update the name
views
.
setTextViewText
(
R
.
id
.
bdw_w_days
,
Long
.
toString
(
widgetModel
.
howManyDays
()));
//Set intents to invoke other activities when widget is clicked on
Intent
defineIntent
=
new
Intent
(
Intent
.
ACTION_VIEW
,
Uri
.
parse
(
"http://www.google.com"
));
PendingIntent
pendingIntent
=
PendingIntent
.
getActivity
(
context
,
0
,
defineIntent
,
0
/* no flags */
);
views
.
setOnClickPendingIntent
(
R
.
id
.
bdw_w_button_buy
,
pendingIntent
);
Intent
configIntent
=
new
Intent
(
context
,
MainActivity
.
class
);
configIntent
.
putExtra
(
AppWidgetManager
.
EXTRA_APPWIDGET_ID
,
widgetModel
.
iid
);
Uri
uri1
=
Uri
.
parse
(
"myapp://widget/id/#togetituniqie"
+
widgetModel
.
iid
);
configIntent
.
setData
(
Uri
.
withAppendedPath
(
uri1
,
String
.
valueOf
(
widgetModel
.
iid
)));
PendingIntent
start_main
=
PendingIntent
.
getActivity
(
context
,
0
,
configIntent
,
0
);
views
.
setOnClickPendingIntent
(
R
.
id
.
bdw_w_date
,
start_main
);
views
.
setOnClickPendingIntent
(
R
.
id
.
bdw_w_name
,
start_main
);
// Tell the widget manager to paint the remote view
appWidgetManager
.
updateAppWidget
(
widgetModel
.
iid
,
views
);
}
}
app/src/main/java/com/rkb/birthdaywidget/Utils.java
app/src/main/java/com/rkb/birthdaywidget/Utils.java
package
com
.
rkb
.
birthdaywidget
;
import
java
.
text
.
DateFormat
;
import
java
.
text
.
ParseException
;
import
java
.
text
.
SimpleDateFormat
;
import
java
.
util
.
Date
;
public
class
Utils
{
public
static
boolean
validateDate
(
String
date
){
String
dateFormat
=
"MM/dd/yyyy"
;
DateFormat
sdf
=
new
SimpleDateFormat
(
dateFormat
);
sdf
.
setLenient
(
false
);
try
{
sdf
.
parse
(
date
);
}
catch
(
ParseException
e
)
{
return
false
;
}
return
true
;
}
public
static
Date
getBirthDay
(
String
bday
){
String
dateFormat
=
"MM/dd/yyyy"
;
DateFormat
sdf
=
new
SimpleDateFormat
(
dateFormat
);
sdf
.
setLenient
(
false
);
try
{
return
sdf
.
parse
(
bday
);
}
catch
(
ParseException
e
)
{
return
null
;
}
}
}
app/src/main/res/drawable/background_shape.xml
app/src/main/res/drawable/ic_launcher_background.xml
app/src/main/res/drawable-v24/ic_launcher_foreground.xml
app/src/main/res/layout/bday_widget.xml
app/src/main/res/layout/edit_bday_widget.xml
app/src/main/res/menu/menu_main.xml
app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
app/src/main/res/mipmap-hdpi/ic_launcher
app/src/main/res/mipmap-hdpi/ic_launcher_round
app/src/main/res/mipmap-mdpi/ic_launcher
app/src/main/res/mipmap-mdpi/ic_launcher_round
app/src/main/res/mipmap-xhdpi/ic_launcher
app/src/main/res/mipmap-xhdpi/ic_launcher_round
app/src/main/res/mipmap-xxhdpi/ic_launcher
app/src/main/res/mipmap-xxhdpi/ic_launcher_round
app/src/main/res/mipmap-xxxhdpi/ic_launcher
app/src/main/res/mipmap-xxxhdpi/ic_launcher_round
app/src/main/res/values/colors.xml
#008577
#00574B
#D81B60
app/src/main/res/values/dimens.xml
16dp
app/src/main/res/values/strings.xml
BirthDay Widget
Settings
com.rkb.birthdaywidget.preference_file_key
app/src/main/res/values/styles.xml
@color/colorPrimary
@color/colorPrimaryDark
@color/colorAccent
@style/PreferenceThemeOverlay
false
true
app/src/main/res/xml/bday_appwidget_provider.xml
app/src/test/java/com/rkb/birthdaywidget/ExampleUnitTest.java
app/src/test/java/com/rkb/birthdaywidget/ExampleUnitTest.java
package
com
.
rkb
.
birthdaywidget
;
import
org
.
junit
.
Test
;
import
static
org
.
junit
.
Assert
.
*
;
/**
* Example local unit test, which will execute on the development machine (host).
*
*
@see
Testing documentation
*/
public
class
ExampleUnitTest
{
@
Test
public
void
addition_isCorrect
()
{
assertEquals
(
4
,
2
+
2
);
}
}
gradle/wrapper/gradle-wrapper.jar
META-INF/MANIFEST.MF
Manifest-Version: 1.0
Implementation-Title: Gradle
Implementation-Version: 4.6
org/gradle/wrapper/BootstrapMainStarter.class
package org.gradle.wrapper;
public synchronized class BootstrapMainStarter {
public void BootstrapMainStarter();
public void start(String[], java.io.File) throws Exception;
private java.io.File findLauncherJar(java.io.File);
}
org/gradle/wrapper/Download$1.class
package org.gradle.wrapper;
synchronized class Download$1 {
}
org/gradle/wrapper/Download$ProxyAuthenticator.class
package org.gradle.wrapper;
synchronized class Download$ProxyAuthenticator extends java.net.Authenticator {
private void Download$ProxyAuthenticator();
protected java.net.PasswordAuthentication getPasswordAuthentication();
}
org/gradle/wrapper/Download.class
package org.gradle.wrapper;
public synchronized class Download implements IDownload {
private static final int PROGRESS_CHUNK = 1048576;
private static final int BUFFER_SIZE = 10240;
private final Logger logger;
private final String appName;
private final String appVersion;
private final DownloadProgressListener progressListener;
public void Download(Logger, String, String);
public void Download(Logger, DownloadProgressListener, String, String);
private void configureProxyAuthentication();
public void download(java.net.URI, java.io.File) throws Exception;
private void downloadInternal(java.net.URI, java.io.File) throws Exception;
static java.net.URI safeUri(java.net.URI) throws java.net.URISyntaxException;
private void addBasicAuthentication(java.net.URI, java.net.URLConnection) throws java.io.IOException;
private String base64Encode(String);
private String calculateUserInfo(java.net.URI);
private String calculateUserAgent();
}
org/gradle/wrapper/DownloadProgressListener.class
package org.gradle.wrapper;
public abstract interface DownloadProgressListener {
public abstract void downloadStatusChanged(java.net.URI, long, long);
}
org/gradle/wrapper/ExclusiveFileAccessManager.class
package org.gradle.wrapper;
public synchronized class ExclusiveFileAccessManager {
public static final String LOCK_FILE_SUFFIX = .lck;
private final int timeoutMs;
private final int pollIntervalMs;
public void ExclusiveFileAccessManager(int, int);
public Object access(java.io.File, java.util.concurrent.Callable) throws Exception;
private long getTimeMillis();
private static void maybeCloseQuietly(java.io.Closeable);
}
org/gradle/wrapper/GradleUserHomeLookup.class
package org.gradle.wrapper;
public synchronized class GradleUserHomeLookup {
public static final String DEFAULT_GRADLE_USER_HOME;
public static final String GRADLE_USER_HOME_PROPERTY_KEY = gradle.user.home;
public static final String GRADLE_USER_HOME_ENV_KEY = GRADLE_USER_HOME;
public void GradleUserHomeLookup();
public static java.io.File gradleUserHome();
static void
}
org/gradle/wrapper/GradleWrapperMain.class
package org.gradle.wrapper;
public synchronized class GradleWrapperMain {
public static final String GRADLE_USER_HOME_OPTION = g;
public static final String GRADLE_USER_HOME_DETAILED_OPTION = gradle-user-home;
public static final String GRADLE_QUIET_OPTION = q;
public static final String GRADLE_QUIET_DETAILED_OPTION = quiet;
public void GradleWrapperMain();
public static void main(String[]) throws Exception;
private static void addSystemProperties(java.io.File, java.io.File);
private static java.io.File rootDir(java.io.File);
private static java.io.File wrapperProperties(java.io.File);
private static java.io.File wrapperJar();
static String wrapperVersion();
private static java.io.File gradleUserHome(org.gradle.cli.ParsedCommandLine);
private static Logger logger(org.gradle.cli.ParsedCommandLine);
}
org/gradle/wrapper/IDownload.class
package org.gradle.wrapper;
public abstract interface IDownload {
public abstract void download(java.net.URI, java.io.File) throws Exception;
}
org/gradle/wrapper/Install$1.class
package org.gradle.wrapper;
synchronized class Install$1 implements java.util.concurrent.Callable {
void Install$1(Install, java.io.File, java.io.File, java.net.URI, WrapperConfiguration, String);
public java.io.File call() throws Exception;
}
org/gradle/wrapper/Install.class
package org.gradle.wrapper;
public synchronized class Install {
public static final String DEFAULT_DISTRIBUTION_PATH = wrapper/dists;
private final Logger logger;
private final IDownload download;
private final PathAssembler pathAssembler;
private final ExclusiveFileAccessManager exclusiveFileAccessManager;
public void Install(Logger, IDownload, PathAssembler);
public java.io.File createDist(WrapperConfiguration) throws Exception;
private String calculateSha256Sum(java.io.File) throws Exception;
private java.io.File getAndVerifyDistributionRoot(java.io.File, String) throws Exception;
private void verifyDownloadChecksum(String, java.io.File, String) throws Exception;
private java.util.List listDirs(java.io.File);
private void setExecutablePermissions(java.io.File);
private boolean isWindows();
private boolean deleteDir(java.io.File);
private void unzip(java.io.File, java.io.File) throws java.io.IOException;
private void copyInputStream(java.io.InputStream, java.io.OutputStream) throws java.io.IOException;
}
org/gradle/wrapper/Logger.class
package org.gradle.wrapper;
public synchronized class Logger implements Appendable {
private final boolean quiet;
public void Logger(boolean);
public void log(String);
public Appendable append(CharSequence);
public Appendable append(CharSequence, int, int);
public Appendable append(char);
}
org/gradle/wrapper/PathAssembler$LocalDistribution.class
package org.gradle.wrapper;
public synchronized class PathAssembler$LocalDistribution {
private final java.io.File distZip;
private final java.io.File distDir;
public void PathAssembler$LocalDistribution(PathAssembler, java.io.File, java.io.File);
public java.io.File getDistributionDir();
public java.io.File getZipFile();
}
org/gradle/wrapper/PathAssembler.class
package org.gradle.wrapper;
public synchronized class PathAssembler {
public static final String GRADLE_USER_HOME_STRING = GRADLE_USER_HOME;
public static final String PROJECT_STRING = PROJECT;
private java.io.File gradleUserHome;
public void PathAssembler();
public void PathAssembler(java.io.File);
public PathAssembler$LocalDistribution getDistribution(WrapperConfiguration);
private String rootDirName(String, WrapperConfiguration);
private String getHash(String);
private String removeExtension(String);
private String getDistName(java.net.URI);
private java.io.File getBaseDir(String);
}
org/gradle/wrapper/SystemPropertiesHandler.class
package org.gradle.wrapper;
public synchronized class SystemPropertiesHandler {
static final String SYSTEM_PROP_PREFIX = systemProp.;
public void SystemPropertiesHandler();
public static java.util.Map getSystemProperties(java.io.File);
}
org/gradle/wrapper/WrapperConfiguration.class
package org.gradle.wrapper;
public synchronized class WrapperConfiguration {
private java.net.URI distribution;
private String distributionBase;
private String distributionPath;
private String distributionSha256Sum;
private String zipBase;
private String zipPath;
public void WrapperConfiguration();
public java.net.URI getDistribution();
public void setDistribution(java.net.URI);
public String getDistributionBase();
public void setDistributionBase(String);
public String getDistributionPath();
public void setDistributionPath(String);
public String getDistributionSha256Sum();
public void setDistributionSha256Sum(String);
public String getZipBase();
public void setZipBase(String);
public String getZipPath();
public void setZipPath(String);
}
org/gradle/wrapper/WrapperExecutor.class
package org.gradle.wrapper;
public synchronized class WrapperExecutor {
public static final String DISTRIBUTION_URL_PROPERTY = distributionUrl;
public static final String DISTRIBUTION_BASE_PROPERTY = distributionBase;
public static final String DISTRIBUTION_PATH_PROPERTY = distributionPath;
public static final String DISTRIBUTION_SHA_256_SUM = distributionSha256Sum;
public static final String ZIP_STORE_BASE_PROPERTY = zipStoreBase;
public static final String ZIP_STORE_PATH_PROPERTY = zipStorePath;
private final java.util.Properties properties;
private final java.io.File propertiesFile;
private final WrapperConfiguration config;
public static WrapperExecutor forProjectDirectory(java.io.File);
public static WrapperExecutor forWrapperPropertiesFile(java.io.File);
void WrapperExecutor(java.io.File, java.util.Properties);
private java.net.URI prepareDistributionUri() throws java.net.URISyntaxException;
private java.net.URI readDistroUrl() throws java.net.URISyntaxException;
private static void loadProperties(java.io.File, java.util.Properties) throws java.io.IOException;
public java.net.URI getDistribution();
public WrapperConfiguration getConfiguration();
public void execute(String[], Install, BootstrapMainStarter) throws Exception;
private String getProperty(String);
private String getProperty(String, String);
private String getProperty(String, String, boolean);
private String reportMissingProperty(String);
}
gradle-wrapper-classpath.properties
projects=gradle-cli
runtime=
org/gradle/cli/AbstractCommandLineConverter.class
package org.gradle.cli;
public abstract synchronized class AbstractCommandLineConverter implements CommandLineConverter {
public void AbstractCommandLineConverter();
public Object convert(Iterable, Object) throws CommandLineArgumentException;
}
org/gradle/cli/AbstractPropertiesCommandLineConverter.class
package org.gradle.cli;
public abstract synchronized class AbstractPropertiesCommandLineConverter extends AbstractCommandLineConverter {
public void AbstractPropertiesCommandLineConverter();
protected abstract String getPropertyOption();
protected abstract String getPropertyOptionDetailed();
protected abstract String getPropertyOptionDescription();
public void configure(CommandLineParser);
public java.util.Map convert(ParsedCommandLine, java.util.Map) throws CommandLineArgumentException;
}
org/gradle/cli/CommandLineArgumentException.class
package org.gradle.cli;
public synchronized class CommandLineArgumentException extends RuntimeException {
public void CommandLineArgumentException(String);
public void CommandLineArgumentException(String, Throwable);
}
org/gradle/cli/CommandLineConverter.class
package org.gradle.cli;
public abstract interface CommandLineConverter {
public abstract Object convert(Iterable, Object) throws CommandLineArgumentException;
public abstract Object convert(ParsedCommandLine, Object) throws CommandLineArgumentException;
public abstract void configure(CommandLineParser);
}
org/gradle/cli/CommandLineOption.class
package org.gradle.cli;
public synchronized class CommandLineOption {
private final java.util.Set options;
private Class argumentType;
private String description;
private boolean incubating;
private final java.util.Set groupWith;
private boolean deprecated;
public void CommandLineOption(Iterable);
public java.util.Set getOptions();
public CommandLineOption hasArgument(Class);
public CommandLineOption hasArgument();
public CommandLineOption hasArguments();
public String getDescription();
private void appendMessage(StringBuilder, boolean, String);
public CommandLineOption hasDescription(String);
public boolean getAllowsArguments();
public boolean getAllowsMultipleArguments();
public CommandLineOption deprecated();
public CommandLineOption incubating();
public boolean isDeprecated();
public boolean isIncubating();
java.util.Set getGroupWith();
void groupWith(java.util.Set);
}
org/gradle/cli/CommandLineParser$1.class
package org.gradle.cli;
synchronized class CommandLineParser$1 {
}
org/gradle/cli/CommandLineParser$AfterFirstSubCommand.class
package org.gradle.cli;
synchronized class CommandLineParser$AfterFirstSubCommand extends CommandLineParser$OptionAwareParserState {
private void CommandLineParser$AfterFirstSubCommand(CommandLineParser, ParsedCommandLine);
public CommandLineParser$OptionParserState onStartOption(String, String);
}
org/gradle/cli/CommandLineParser$AfterOptions.class
package org.gradle.cli;
synchronized class CommandLineParser$AfterOptions extends CommandLineParser$ParserState {
private final ParsedCommandLine commandLine;
private void CommandLineParser$AfterOptions(ParsedCommandLine);
public boolean maybeStartOption(String);
public CommandLineParser$OptionParserState onStartOption(String, String);
public CommandLineParser$ParserState onNonOption(String);
}
org/gradle/cli/CommandLineParser$BeforeFirstSubCommand.class
package org.gradle.cli;
synchronized class CommandLineParser$BeforeFirstSubCommand extends CommandLineParser$OptionAwareParserState {
private void CommandLineParser$BeforeFirstSubCommand(CommandLineParser, ParsedCommandLine);
public CommandLineParser$OptionParserState onStartOption(String, String);
}
org/gradle/cli/CommandLineParser$CaseInsensitiveStringComparator.class
package org.gradle.cli;
final synchronized class CommandLineParser$CaseInsensitiveStringComparator implements java.util.Comparator {
private void CommandLineParser$CaseInsensitiveStringComparator();
public int compare(String, String);
}
org/gradle/cli/CommandLineParser$KnownOptionParserState.class
package org.gradle.cli;
synchronized class CommandLineParser$KnownOptionParserState extends CommandLineParser$OptionParserState {
private final CommandLineParser$OptionString optionString;
private final CommandLineOption option;
private final ParsedCommandLine commandLine;
private final CommandLineParser$ParserState state;
private final java.util.List values;
private void CommandLineParser$KnownOptionParserState(CommandLineParser, CommandLineParser$OptionString, CommandLineOption, ParsedCommandLine, CommandLineParser$ParserState);
public CommandLineParser$ParserState onArgument(String);
public CommandLineParser$ParserState onStartNextArg();
public boolean getHasArgument();
public CommandLineParser$ParserState onComplete();
}
org/gradle/cli/CommandLineParser$MissingOptionArgState.class
package org.gradle.cli;
synchronized class CommandLineParser$MissingOptionArgState extends CommandLineParser$ParserState {
private final CommandLineParser$OptionParserState option;
private void CommandLineParser$MissingOptionArgState(CommandLineParser$OptionParserState);
public boolean maybeStartOption(String);
public CommandLineParser$OptionParserState onStartOption(String, String);
public CommandLineParser$ParserState onNonOption(String);
public void onCommandLineEnd();
}
org/gradle/cli/CommandLineParser$OptionAwareParserState.class
package org.gradle.cli;
abstract synchronized class CommandLineParser$OptionAwareParserState extends CommandLineParser$ParserState {
protected final ParsedCommandLine commandLine;
protected void CommandLineParser$OptionAwareParserState(CommandLineParser, ParsedCommandLine);
public boolean maybeStartOption(String);
public CommandLineParser$ParserState onNonOption(String);
}
org/gradle/cli/CommandLineParser$OptionComparator.class
package org.gradle.cli;
final synchronized class CommandLineParser$OptionComparator implements java.util.Comparator {
private void CommandLineParser$OptionComparator();
public int compare(CommandLineOption, CommandLineOption);
}
org/gradle/cli/CommandLineParser$OptionParserState.class
package org.gradle.cli;
abstract synchronized class CommandLineParser$OptionParserState {
private void CommandLineParser$OptionParserState();
public abstract CommandLineParser$ParserState onStartNextArg();
public abstract CommandLineParser$ParserState onArgument(String);
public abstract boolean getHasArgument();
public abstract CommandLineParser$ParserState onComplete();
}
org/gradle/cli/CommandLineParser$OptionString.class
package org.gradle.cli;
synchronized class CommandLineParser$OptionString {
private final String arg;
private final String option;
private void CommandLineParser$OptionString(String, String);
public String getDisplayName();
public String toString();
}
org/gradle/cli/CommandLineParser$OptionStringComparator.class
package org.gradle.cli;
final synchronized class CommandLineParser$OptionStringComparator implements java.util.Comparator {
private void CommandLineParser$OptionStringComparator();
public int compare(String, String);
}
org/gradle/cli/CommandLineParser$ParserState.class
package org.gradle.cli;
abstract synchronized class CommandLineParser$ParserState {
private void CommandLineParser$ParserState();
public abstract boolean maybeStartOption(String);
boolean isOption(String);
public abstract CommandLineParser$OptionParserState onStartOption(String, String);
public abstract CommandLineParser$ParserState onNonOption(String);
public void onCommandLineEnd();
}
org/gradle/cli/CommandLineParser$UnknownOptionParserState.class
package org.gradle.cli;
synchronized class CommandLineParser$UnknownOptionParserState extends CommandLineParser$OptionParserState {
private final CommandLineParser$ParserState state;
private final String arg;
private final ParsedCommandLine commandLine;
private void CommandLineParser$UnknownOptionParserState(String, ParsedCommandLine, CommandLineParser$ParserState);
public boolean getHasArgument();
public CommandLineParser$ParserState onStartNextArg();
public CommandLineParser$ParserState onArgument(String);
public CommandLineParser$ParserState onComplete();
}
org/gradle/cli/CommandLineParser.class
package org.gradle.cli;
public synchronized class CommandLineParser {
private static final java.util.regex.Pattern OPTION_NAME_PATTERN;
private java.util.Map optionsByString;
private boolean allowMixedOptions;
private boolean allowUnknownOptions;
public void CommandLineParser();
public transient ParsedCommandLine parse(String[]) throws CommandLineArgumentException;
public ParsedCommandLine parse(Iterable) throws CommandLineArgumentException;
public CommandLineParser allowMixedSubcommandsAndOptions();
public CommandLineParser allowUnknownOptions();
public transient CommandLineParser allowOneOf(String[]);
public void printUsage(Appendable);
private static String join(java.util.Collection, String);
public transient CommandLineOption option(String[]);
static void
}
org/gradle/cli/ParsedCommandLine.class
package org.gradle.cli;
public synchronized class ParsedCommandLine {
private final java.util.Map optionsByString;
private final java.util.Set presentOptions;
private final java.util.Set removedOptions;
private final java.util.List extraArguments;
void ParsedCommandLine(Iterable);
public String toString();
private String quoteAndJoin(Iterable);
public boolean hasOption(String);
public boolean hadOptionRemoved(String);
public boolean hasAnyOption(java.util.Collection);
public ParsedCommandLineOption option(String);
public java.util.List getExtraArguments();
void addExtraValue(String);
ParsedCommandLineOption addOption(String, CommandLineOption);
void removeOption(CommandLineOption);
}
org/gradle/cli/ParsedCommandLineOption.class
package org.gradle.cli;
public synchronized class ParsedCommandLineOption {
private final java.util.List values;
public void ParsedCommandLineOption();
public String getValue();
public java.util.List getValues();
public void addArgument(String);
public boolean hasValue();
}
org/gradle/cli/ProjectPropertiesCommandLineConverter.class
package org.gradle.cli;
public synchronized class ProjectPropertiesCommandLineConverter extends AbstractPropertiesCommandLineConverter {
public void ProjectPropertiesCommandLineConverter();
protected String getPropertyOption();
protected String getPropertyOptionDetailed();
protected String getPropertyOptionDescription();
}
org/gradle/cli/SystemPropertiesCommandLineConverter.class
package org.gradle.cli;
public synchronized class SystemPropertiesCommandLineConverter extends AbstractPropertiesCommandLineConverter {
public void SystemPropertiesCommandLineConverter();
protected String getPropertyOption();
protected String getPropertyOptionDetailed();
protected String getPropertyOptionDescription();
}
gradle-cli-classpath.properties
projects=
runtime=
build-receipt.properties
versionNumber=4.6
gradle/wrapper/gradle-wrapper.properties
#Mon Jan 20 12:52:10 EAT 2020
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip
.gitignore
*.iml
.gradle
/local.properties
/.idea/caches
/.idea/libraries
/.idea/modules.xml
/.idea/workspace.xml
/.idea/navEditor.xml
/.idea/assetWizardSettings.xml
.DS_Store
/build
/captures
.externalNativeBuild
BirthDayWidget2.iml
gradle.properties
# Project-wide Gradle settings.
# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
android.enableJetifier=true
android.useAndroidX=true
org.gradle.jvmargs=-Xmx1536m
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
gradlew
#!/usr/bin/env sh
##############################################################################
##
## Gradle start up script for UN*X
##
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG=”$0″
# Need this for relative symlinks.
while [ -h “$PRG” ] ; do
ls=`ls -ld “$PRG”`
link=`expr “$ls” : ‘.*-> \(.*\)$’`
if expr “$link” : ‘/.*’ > /dev/null; then
PRG=”$link”
else
PRG=`dirname “$PRG”`”/$link”
fi
done
SAVED=”`pwd`”
cd “`dirname \”$PRG\”`/” >/dev/null
APP_HOME=”`pwd -P`”
cd “$SAVED” >/dev/null
APP_NAME=”Gradle”
APP_BASE_NAME=`basename “$0″`
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS=””
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=”maximum”
warn () {
echo “$*”
}
die () {
echo
echo “$*”
echo
exit 1
}
# OS specific support (must be ‘true’ or ‘false’).
cygwin=false
msys=false
darwin=false
nonstop=false
case “`uname`” in
CYGWIN* )
cygwin=true
;;
Darwin* )
darwin=true
;;
MINGW* )
msys=true
;;
NONSTOP* )
nonstop=true
;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n “$JAVA_HOME” ] ; then
if [ -x “$JAVA_HOME/jre/sh/java” ] ; then
# IBM’s JDK on AIX uses strange locations for the executables
JAVACMD=”$JAVA_HOME/jre/sh/java”
else
JAVACMD=”$JAVA_HOME/bin/java”
fi
if [ ! -x “$JAVACMD” ] ; then
die “ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation.”
fi
else
JAVACMD=”java”
which java >/dev/null 2>&1 || die “ERROR: JAVA_HOME is not set and no ‘java’ command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation.”
fi
# Increase the maximum file descriptors if we can.
if [ “$cygwin” = “false” -a “$darwin” = “false” -a “$nonstop” = “false” ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ “$MAX_FD” = “maximum” -o “$MAX_FD” = “max” ] ; then
MAX_FD=”$MAX_FD_LIMIT”
fi
ulimit -n $MAX_FD
if [ $? -ne 0 ] ; then
warn “Could not set maximum file descriptor limit: $MAX_FD”
fi
else
warn “Could not query maximum file descriptor limit: $MAX_FD_LIMIT”
fi
fi
# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS=”$GRADLE_OPTS \”-Xdock:name=$APP_NAME\” \”-Xdock:icon=$APP_HOME/media/gradle.icns\””
fi
# For Cygwin, switch paths to Windows format before running java
if $cygwin ; then
APP_HOME=`cygpath –path –mixed “$APP_HOME”`
CLASSPATH=`cygpath –path –mixed “$CLASSPATH”`
JAVACMD=`cygpath –unix “$JAVACMD”`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=””
for dir in $ROOTDIRSRAW ; do
ROOTDIRS=”$ROOTDIRS$SEP$dir”
SEP=”|”
done
OURCYGPATTERN=”(^($ROOTDIRS))”
# Add a user-defined pattern to the cygpath arguments
if [ “$GRADLE_CYGPATTERN” != “” ] ; then
OURCYGPATTERN=”$OURCYGPATTERN|($GRADLE_CYGPATTERN)”
fi
# Now convert the arguments – kludge to limit ourselves to /bin/sh
i=0
for arg in “$@” ; do
CHECK=`echo “$arg”|egrep -c “$OURCYGPATTERN” -`
CHECK2=`echo “$arg”|egrep -c “^-“` ### Determine if an option
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath –path –ignore –mixed “$arg”`
else
eval `echo args$i`=”\”$arg\””
fi
i=$((i+1))
done
case $i in
(0) set — ;;
(1) set — “$args0” ;;
(2) set — “$args0” “$args1” ;;
(3) set — “$args0” “$args1” “$args2” ;;
(4) set — “$args0” “$args1” “$args2” “$args3” ;;
(5) set — “$args0” “$args1” “$args2” “$args3” “$args4” ;;
(6) set — “$args0” “$args1” “$args2” “$args3” “$args4” “$args5” ;;
(7) set — “$args0” “$args1” “$args2” “$args3” “$args4” “$args5” “$args6” ;;
(8) set — “$args0” “$args1” “$args2” “$args3” “$args4” “$args5” “$args6” “$args7” ;;
(9) set — “$args0” “$args1” “$args2” “$args3” “$args4” “$args5” “$args6” “$args7” “$args8” ;;
esac
fi
# Escape application args
save () {
for i do printf %s\\n “$i” | sed “s/’/’\\\\”/g;1s/^/’/;\$s/\$/’ \\\\/” ; done
echo ” ”
}
APP_ARGS=$(save “$@”)
# Collect all arguments for the java command, following the shell quoting and substitution rules
eval set — $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS “\”-Dorg.gradle.appname=$APP_BASE_NAME\”” -classpath “\”$CLASSPATH\”” org.gradle.wrapper.GradleWrapperMain “$APP_ARGS”
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
if [ “$(uname)” = “Darwin” ] && [ “$HOME” = “$PWD” ]; then
cd “$(dirname “$0″)”
fi
exec “$JAVACMD” “$@”
gradlew.bat
@if “%DEBUG%” == “” @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if “%OS%”==”Windows_NT” setlocal
set DIRNAME=%~dp0
if “%DIRNAME%” == “” set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS=
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if “%ERRORLEVEL%” == “0” goto init
echo.
echo ERROR: JAVA_HOME is not set and no ‘java’ command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:”=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist “%JAVA_EXE%” goto init
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:init
@rem Get command-line arguments, handling Windows variants
if not “%OS%” == “Windows_NT” goto win9xME_args
:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2
:win9xME_args_slurp
if “x%~1” == “x” goto execute
set CMD_LINE_ARGS=%*
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
“%JAVA_EXE%” %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% “-Dorg.gradle.appname=%APP_BASE_NAME%” -classpath “%CLASSPATH%” org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
:end
@rem End local scope for the variables with windows NT shell
if “%ERRORLEVEL%”==”0” goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if not “” == “%GRADLE_EXIT_CONSOLE%” exit 1
exit /b 1
:mainEnd
if “%OS%”==”Windows_NT” endlocal
:omega
local.properties
## This file is automatically generated by Android Studio.
# Do not modify this file — YOUR CHANGES WILL BE ERASED!
#
# This file should *NOT* be checked into Version Control Systems,
# as it contains information specific to your local configuration.
#
# Location of the SDK. This is only used by Gradle.
# For customization when using a Version Control System, please read the
# header note.
sdk.dir=C\:\\Users\\hp\\AppData\\Local\\Android\\Sdk
settings.gradle
include ‘:app’
test.jks
.gradle/5.1.1/executionHistory/executionHistory.bin
.gradle/5.1.1/executionHistory/executionHistory.lock
.gradle/5.1.1/fileChanges/last-build.bin
.gradle/5.1.1/fileContent/fileContent.lock
.gradle/5.1.1/fileHashes/fileHashes.bin
.gradle/5.1.1/fileHashes/fileHashes.lock
.gradle/5.1.1/fileHashes/resourceHashesCache.bin
.gradle/5.1.1/gc.properties
.gradle/5.1.1/javaCompile/classAnalysis.bin
.gradle/5.1.1/javaCompile/javaCompile.lock
.gradle/5.1.1/javaCompile/taskHistory.bin
.gradle/buildOutputCleanup/buildOutputCleanup.lock
.gradle/buildOutputCleanup/cache.properties
#Wed Jan 08 10:59:27 EAT 2020
gradle.version=5.1.1
.gradle/buildOutputCleanup/outputFiles.bin
.gradle/vcs-1/gc.properties
.idea/caches/build_file_checksums.ser
.idea/caches/gradle_models.ser
.idea/encodings.xml
.idea/gradle.xml
.idea/libraries/Gradle__androidx_annotation_annotation_1_0_0_jar.xml
.idea/libraries/Gradle__androidx_appcompat_appcompat_1_0_0_aar.xml
.idea/libraries/Gradle__androidx_arch_core_core_common_2_0_0_jar.xml
.idea/libraries/Gradle__androidx_arch_core_core_runtime_2_0_0_aar.xml
.idea/libraries/Gradle__androidx_asynclayoutinflater_asynclayoutinflater_1_0_0_aar.xml
.idea/libraries/Gradle__androidx_collection_collection_1_0_0_jar.xml
.idea/libraries/Gradle__androidx_constraintlayout_constraintlayout_1_1_3_aar.xml
.idea/libraries/Gradle__androidx_constraintlayout_constraintlayout_solver_1_1_3_jar.xml
.idea/libraries/Gradle__androidx_coordinatorlayout_coordinatorlayout_1_0_0_aar.xml
.idea/libraries/Gradle__androidx_core_core_1_0_0_aar.xml
.idea/libraries/Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml
.idea/libraries/Gradle__androidx_customview_customview_1_0_0_aar.xml
.idea/libraries/Gradle__androidx_documentfile_documentfile_1_0_0_aar.xml
.idea/libraries/Gradle__androidx_drawerlayout_drawerlayout_1_0_0_aar.xml
.idea/libraries/Gradle__androidx_fragment_fragment_1_0_0_aar.xml
.idea/libraries/Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml
.idea/libraries/Gradle__androidx_legacy_legacy_support_core_ui_1_0_0_aar.xml
.idea/libraries/Gradle__androidx_legacy_legacy_support_core_utils_1_0_0_aar.xml
.idea/libraries/Gradle__androidx_lifecycle_lifecycle_common_2_0_0_jar.xml
.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_2_0_0_aar.xml
.idea/libraries/Gradle__androidx_lifecycle_lifecycle_livedata_core_2_0_0_aar.xml
.idea/libraries/Gradle__androidx_lifecycle_lifecycle_runtime_2_0_0_aar.xml
.idea/libraries/Gradle__androidx_lifecycle_lifecycle_viewmodel_2_0_0_aar.xml
.idea/libraries/Gradle__androidx_loader_loader_1_0_0_aar.xml
.idea/libraries/Gradle__androidx_localbroadcastmanager_localbroadcastmanager_1_0_0_aar.xml
.idea/libraries/Gradle__androidx_print_print_1_0_0_aar.xml
.idea/libraries/Gradle__androidx_slidingpanelayout_slidingpanelayout_1_0_0_aar.xml
.idea/libraries/Gradle__androidx_swiperefreshlayout_swiperefreshlayout_1_0_0_aar.xml
.idea/libraries/Gradle__androidx_test_espresso_espresso_core_3_1_0_aar.xml
.idea/libraries/Gradle__androidx_test_espresso_espresso_idling_resource_3_1_0_aar.xml
.idea/libraries/Gradle__androidx_test_monitor_1_1_0_aar.xml
.idea/libraries/Gradle__androidx_test_runner_1_1_0_aar.xml
.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_1_0_0_aar.xml
.idea/libraries/Gradle__androidx_vectordrawable_vectordrawable_animated_1_0_0_aar.xml
.idea/libraries/Gradle__androidx_versionedparcelable_versionedparcelable_1_0_0_aar.xml
.idea/libraries/Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml
.idea/libraries/Gradle__android_arch_core_common_1_1_1_jar.xml
.idea/libraries/Gradle__android_arch_core_runtime_1_1_1_aar.xml
.idea/libraries/Gradle__android_arch_lifecycle_common_1_1_1_jar.xml
.idea/libraries/Gradle__android_arch_lifecycle_livedata_1_1_1_aar.xml
.idea/libraries/Gradle__android_arch_lifecycle_livedata_core_1_1_1_aar.xml
.idea/libraries/Gradle__android_arch_lifecycle_runtime_1_1_1_aar.xml
.idea/libraries/Gradle__android_arch_lifecycle_viewmodel_1_1_1_aar.xml
.idea/libraries/Gradle__com_android_support_animated_vector_drawable_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_appcompat_v7_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_asynclayoutinflater_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_collections_28_0_0_jar.xml
.idea/libraries/Gradle__com_android_support_constraint_constraint_layout_1_1_3_aar.xml
.idea/libraries/Gradle__com_android_support_constraint_constraint_layout_solver_1_1_3_jar.xml
.idea/libraries/Gradle__com_android_support_coordinatorlayout_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_cursoradapter_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_customview_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_documentfile_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_drawerlayout_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_interpolator_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_loader_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_localbroadcastmanager_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_print_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_slidingpanelayout_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_support_annotations_28_0_0_jar.xml
.idea/libraries/Gradle__com_android_support_support_compat_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_support_core_ui_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_support_core_utils_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_support_fragment_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_support_vector_drawable_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_swiperefreshlayout_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_test_espresso_espresso_core_3_0_2_aar.xml
.idea/libraries/Gradle__com_android_support_test_espresso_espresso_idling_resource_3_0_2_aar.xml
.idea/libraries/Gradle__com_android_support_test_monitor_1_0_2_aar.xml
.idea/libraries/Gradle__com_android_support_test_runner_1_0_2_aar.xml
.idea/libraries/Gradle__com_android_support_versionedparcelable_28_0_0_aar.xml
.idea/libraries/Gradle__com_android_support_viewpager_28_0_0_aar.xml
.idea/libraries/Gradle__com_google_android_gms_play_services_basement_17_0_0_aar.xml
.idea/libraries/Gradle__com_google_android_gms_play_services_base_17_0_0_aar.xml
.idea/libraries/Gradle__com_google_android_gms_play_services_maps_17_0_0_aar.xml
.idea/libraries/Gradle__com_google_android_gms_play_services_tasks_17_0_0_aar.xml
.idea/libraries/Gradle__com_google_code_findbugs_jsr305_2_0_1_jar.xml
.idea/libraries/Gradle__com_squareup_javawriter_2_1_1_jar.xml
.idea/libraries/Gradle__javax_inject_javax_inject_1_jar.xml
.idea/libraries/Gradle__junit_junit_4_12_jar.xml
.idea/libraries/Gradle__net_sf_kxml_kxml2_2_3_0_jar.xml
.idea/libraries/Gradle__org_hamcrest_hamcrest_core_1_3_jar.xml
.idea/libraries/Gradle__org_hamcrest_hamcrest_integration_1_3_jar.xml
.idea/libraries/Gradle__org_hamcrest_hamcrest_library_1_3_jar.xml
.idea/misc.xml
.idea/modules.xml
.idea/runConfigurations.xml
.idea/vcs.xml
.idea/workspace.xml
1578470310945
1578470310945
Android API 26 Platform
app/.gitignore
/build
app/app.iml
generateDebugSources
app/build.gradle
apply plugin: ‘com.android.application’
android {
compileSdkVersion 28
defaultConfig {
applicationId “com.best.geocoding”
minSdkVersion 15
targetSdkVersion 28
versionCode 1
versionName “1.0”
testInstrumentationRunner “androidx.test.runner.AndroidJUnitRunner”
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile(‘proguard-android-optimize.txt’), ‘proguard-rules.pro’
}
}
}
dependencies {
implementation fileTree(dir: ‘libs’, include: [‘*.jar’])
implementation ‘androidx.appcompat:appcompat:1.0.0’
implementation ‘androidx.constraintlayout:constraintlayout:1.1.3’
testImplementation ‘junit:junit:4.12’
androidTestImplementation ‘androidx.test:runner:1.1.0’
androidTestImplementation ‘androidx.test.espresso:espresso-core:3.1.0’
implementation ‘com.google.android.gms:play-services-maps:17.0.0’
}
app/proguard-rules.pro
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
app/src/androidTest/java/com/best/geocoding/ExampleInstrumentedTest.java
app/src/androidTest/java/com/best/geocoding/ExampleInstrumentedTest.java
package
com
.
best
.
geocoding
;
import
android
.
content
.
Context
;
import
androidx
.
test
.
InstrumentationRegistry
;
import
androidx
.
test
.
runner
.
AndroidJUnit4
;
import
org
.
junit
.
Test
;
import
org
.
junit
.
runner
.
RunWith
;
import
static
org
.
junit
.
Assert
.
*
;
/**
* Instrumented test, which will execute on an Android device.
*
*
@see
Testing documentation
*/
@
RunWith
(
AndroidJUnit4
.
class
)
public
class
ExampleInstrumentedTest
{
@
Test
public
void
useAppContext
()
{
// Context of the app under test.
Context
appContext
=
InstrumentationRegistry
.
getTargetContext
();
assertEquals
(
“com.best.geocoding”
,
appContext
.
getPackageName
());
}
}
app/src/main/AndroidManifest.xml
app/src/main/java/com/best/geocoding/MainActivity.java
app/src/main/java/com/best/geocoding/MainActivity.java
package
com
.
best
.
geocoding
;
import
android
.
content
.
pm
.
PackageManager
;
import
android
.
location
.
Address
;
import
android
.
location
.
Geocoder
;
import
android
.
os
.
Build
;
import
androidx
.
annotation
.
NonNull
;
import
androidx
.
core
.
app
.
ActivityCompat
;
import
androidx
.
core
.
content
.
ContextCompat
;
import
androidx
.
fragment
.
app
.
FragmentActivity
;
import
androidx
.
appcompat
.
app
.
AppCompatActivity
;
import
android
.
os
.
Bundle
;
import
android
.
view
.
KeyEvent
;
import
android
.
view
.
inputmethod
.
EditorInfo
;
import
android
.
widget
.
EditText
;
import
android
.
widget
.
TextView
;
import
android
.
widget
.
Toast
;
import
com
.
google
.
android
.
gms
.
maps
.
model
.
LatLng
;
import
java
.
io
.
IOException
;
import
java
.
util
.
List
;
public
class
MainActivity
extends
FragmentActivity
{
private
static
final
String
MAPFRAGTAG
=
“MAPFRAGTAG”
;
MyMapFragment
myMapFrag
=
null
;
private
Geocoder
geocoder
;
@
Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
setContentView
(
R
.
layout
.
activity_main
);
checkPermission
(
“android.permission.ACCESS_FINE_LOCATION”
,
0
);
}
public
void
checkPermission
(
String
permission
,
int
requestCode
)
{
if
(
ContextCompat
.
checkSelfPermission
(
MainActivity
.
this
,
permission
)
==
PackageManager
.
PERMISSION_DENIED
)
{
ActivityCompat
.
requestPermissions
(
MainActivity
.
this
,
new
String
[]
{
permission
},
requestCode
);
}
else
{
loadData
();
}
}
public
void
loadData
(){
if
((
myMapFrag
=
(
MyMapFragment
)
getSupportFragmentManager
().
findFragmentByTag
(
MAPFRAGTAG
))
==
null
)
{
myMapFrag
=
MyMapFragment
.
newInstance
();
getSupportFragmentManager
().
beginTransaction
()
.
add
(
R
.
id
.
container
,
myMapFrag
,
MAPFRAGTAG
).
commit
();
}
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
GINGERBREAD
&&
!
Geocoder
.
isPresent
())
{
Toast
.
makeText
(
this
,
“Geocoder is not available on this device”
,
Toast
.
LENGTH_LONG
).
show
();
finish
();
}
geocoder
=
new
Geocoder
(
this
);
EditText
loc
=
(
EditText
)
findViewById
(
R
.
id
.
locationName
);
loc
.
setOnEditorActionListener
(
new
TextView
.
OnEditorActionListener
()
{
@
Override
public
boolean
onEditorAction
(
TextView
v
,
int
actionId
,
KeyEvent
event
)
{
if
(
actionId
==
EditorInfo
.
IME_ACTION_GO
)
{
String
locationName
=
v
.
getText
().
toString
();
try
{
List
<
Address
>
addressList
=
geocoder
.
getFromLocationName
(
locationName
,
5
);
if
(
addressList
!=
null
&&
addressList
.
size
()
>
0
)
{
// Log.v(TAG, “Address: “+ addressList.get(0).toString());
myMapFrag
.
gotoLocation
(
new
LatLng
(
addressList
.
get
(
0
).
getLatitude
(),
addressList
.
get
(
0
).
getLongitude
()),
locationName
);
}
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
return
false
;
}
});
}
@
Override
public
void
onRequestPermissionsResult
(
int
requestCode
,
@
NonNull
String
[]
permissions
,
@
NonNull
int
[]
grantResults
)
{
super
.
onRequestPermissionsResult
(
requestCode
,
permissions
,
grantResults
);
if
(
requestCode
==
0
)
{
// Checking whether user granted the permission or not.
if
(
grantResults
.
length
>
0
&&
grantResults
[
0
]
==
PackageManager
.
PERMISSION_GRANTED
)
{
loadData
();
}
else
{
Toast
.
makeText
(
MainActivity
.
this
,
“Camera Permission Denied”
,
Toast
.
LENGTH_SHORT
).
show
();
}
}
}
}
app/src/main/java/com/best/geocoding/MyMapFragment.java
app/src/main/java/com/best/geocoding/MyMapFragment.java
package
com
.
best
.
geocoding
;
import
android
.
os
.
Bundle
;
import
com
.
google
.
android
.
gms
.
maps
.
CameraUpdateFactory
;
import
com
.
google
.
android
.
gms
.
maps
.
GoogleMap
;
import
com
.
google
.
android
.
gms
.
maps
.
OnMapReadyCallback
;
import
com
.
google
.
android
.
gms
.
maps
.
SupportMapFragment
;
import
com
.
google
.
android
.
gms
.
maps
.
model
.
BitmapDescriptorFactory
;
import
com
.
google
.
android
.
gms
.
maps
.
model
.
LatLng
;
import
com
.
google
.
android
.
gms
.
maps
.
model
.
MarkerOptions
;
public
class
MyMapFragment
extends
SupportMapFragment
implements
OnMapReadyCallback
{
private
GoogleMap
mMap
=
null
;
public
static
MyMapFragment
newInstance
()
{
MyMapFragment
myMF
=
new
MyMapFragment
();
return
myMF
;
}
@
Override
public
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
getMapAsync
(
this
);
}
@
Override
public
void
onActivityCreated
(
Bundle
savedInstanceState
)
{
super
.
onActivityCreated
(
savedInstanceState
);
setRetainInstance
(
true
);
}
public
void
gotoLocation
(
LatLng
latlng
,
String
locString
)
{
if
(
mMap
==
null
)
return
;
// Add a marker for the given location
MarkerOptions
markerOpt
=
new
MarkerOptions
()
.
draggable
(
false
)
.
flat
(
false
)
.
position
(
latlng
)
.
icon
(
BitmapDescriptorFactory
.
defaultMarker
(
BitmapDescriptorFactory
.
HUE_AZURE
))
.
title
(
“You chose:”
)
.
snippet
(
locString
);
// See the onMarkerClicked callback for why we do this
mMap
.
addMarker
(
markerOpt
);
// Move the camera to zoom in on our location
mMap
.
moveCamera
(
CameraUpdateFactory
.
newLatLngZoom
(
latlng
,
15
));
}
@
Override
public
void
onMapReady
(
GoogleMap
arg0
)
{
mMap
=
arg0
;
}
}
app/src/main/res/drawable/ic_launcher_background.xml
app/src/main/res/drawable-v24/ic_launcher_foreground.xml
app/src/main/res/layout/activity_main.xml
app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
app/src/main/res/mipmap-hdpi/ic_launcher
app/src/main/res/mipmap-hdpi/ic_launcher_round
app/src/main/res/mipmap-mdpi/ic_launcher
app/src/main/res/mipmap-mdpi/ic_launcher_round
app/src/main/res/mipmap-xhdpi/ic_launcher
app/src/main/res/mipmap-xhdpi/ic_launcher_round
app/src/main/res/mipmap-xxhdpi/ic_launcher
app/src/main/res/mipmap-xxhdpi/ic_launcher_round
app/src/main/res/mipmap-xxxhdpi/ic_launcher
app/src/main/res/mipmap-xxxhdpi/ic_launcher_round
app/src/main/res/values/colors.xml
#008577
#00574B
#D81B60
app/src/main/res/values/strings.xml
GeoCoding
app/src/main/res/values/styles.xml
@color/colorPrimary
@color/colorPrimaryDark
@color/colorAccent
app/src/test/java/com/best/geocoding/ExampleUnitTest.java
app/src/test/java/com/best/geocoding/ExampleUnitTest.java
package
com
.
best
.
geocoding
;
import
org
.
junit
.
Test
;
import
static
org
.
junit
.
Assert
.
*
;
/**
* Example local unit test, which will execute on the development machine (host).
*
*
@see
Testing documentation
*/
public
class
ExampleUnitTest
{
@
Test
public
void
addition_isCorrect
()
{
assertEquals
(
4
,
2
+
2
);
}
}
gradle/wrapper/gradle-wrapper.jar
META-INF/MANIFEST.MF
Manifest-Version: 1.0
Implementation-Title: Gradle
Implementation-Version: 4.6
org/gradle/wrapper/BootstrapMainStarter.class
package org.gradle.wrapper;
public synchronized class BootstrapMainStarter {
public void BootstrapMainStarter();
public void start(String[], java.io.File) throws Exception;
private java.io.File findLauncherJar(java.io.File);
}
org/gradle/wrapper/Download$1.class
package org.gradle.wrapper;
synchronized class Download$1 {
}
org/gradle/wrapper/Download$ProxyAuthenticator.class
package org.gradle.wrapper;
synchronized class Download$ProxyAuthenticator extends java.net.Authenticator {
private void Download$ProxyAuthenticator();
protected java.net.PasswordAuthentication getPasswordAuthentication();
}
org/gradle/wrapper/Download.class
package org.gradle.wrapper;
public synchronized class Download implements IDownload {
private static final int PROGRESS_CHUNK = 1048576;
private static final int BUFFER_SIZE = 10240;
private final Logger logger;
private final String appName;
private final String appVersion;
private final DownloadProgressListener progressListener;
public void Download(Logger, String, String);
public void Download(Logger, DownloadProgressListener, String, String);
private void configureProxyAuthentication();
public void download(java.net.URI, java.io.File) throws Exception;
private void downloadInternal(java.net.URI, java.io.File) throws Exception;
static java.net.URI safeUri(java.net.URI) throws java.net.URISyntaxException;
private void addBasicAuthentication(java.net.URI, java.net.URLConnection) throws java.io.IOException;
private String base64Encode(String);
private String calculateUserInfo(java.net.URI);
private String calculateUserAgent();
}
org/gradle/wrapper/DownloadProgressListener.class
package org.gradle.wrapper;
public abstract interface DownloadProgressListener {
public abstract void downloadStatusChanged(java.net.URI, long, long);
}
org/gradle/wrapper/ExclusiveFileAccessManager.class
package org.gradle.wrapper;
public synchronized class ExclusiveFileAccessManager {
public static final String LOCK_FILE_SUFFIX = .lck;
private final int timeoutMs;
private final int pollIntervalMs;
public void ExclusiveFileAccessManager(int, int);
public Object access(java.io.File, java.util.concurrent.Callable) throws Exception;
private long getTimeMillis();
private static void maybeCloseQuietly(java.io.Closeable);
}
org/gradle/wrapper/GradleUserHomeLookup.class
package org.gradle.wrapper;
public synchronized class GradleUserHomeLookup {
public static final String DEFAULT_GRADLE_USER_HOME;
public static final String GRADLE_USER_HOME_PROPERTY_KEY = gradle.user.home;
public static final String GRADLE_USER_HOME_ENV_KEY = GRADLE_USER_HOME;
public void GradleUserHomeLookup();
public static java.io.File gradleUserHome();
static void
}
org/gradle/wrapper/GradleWrapperMain.class
package org.gradle.wrapper;
public synchronized class GradleWrapperMain {
public static final String GRADLE_USER_HOME_OPTION = g;
public static final String GRADLE_USER_HOME_DETAILED_OPTION = gradle-user-home;
public static final String GRADLE_QUIET_OPTION = q;
public static final String GRADLE_QUIET_DETAILED_OPTION = quiet;
public void GradleWrapperMain();
public static void main(String[]) throws Exception;
private static void addSystemProperties(java.io.File, java.io.File);
private static java.io.File rootDir(java.io.File);
private static java.io.File wrapperProperties(java.io.File);
private static java.io.File wrapperJar();
static String wrapperVersion();
private static java.io.File gradleUserHome(org.gradle.cli.ParsedCommandLine);
private static Logger logger(org.gradle.cli.ParsedCommandLine);
}
org/gradle/wrapper/IDownload.class
package org.gradle.wrapper;
public abstract interface IDownload {
public abstract void download(java.net.URI, java.io.File) throws Exception;
}
org/gradle/wrapper/Install$1.class
package org.gradle.wrapper;
synchronized class Install$1 implements java.util.concurrent.Callable {
void Install$1(Install, java.io.File, java.io.File, java.net.URI, WrapperConfiguration, String);
public java.io.File call() throws Exception;
}
org/gradle/wrapper/Install.class
package org.gradle.wrapper;
public synchronized class Install {
public static final String DEFAULT_DISTRIBUTION_PATH = wrapper/dists;
private final Logger logger;
private final IDownload download;
private final PathAssembler pathAssembler;
private final ExclusiveFileAccessManager exclusiveFileAccessManager;
public void Install(Logger, IDownload, PathAssembler);
public java.io.File createDist(WrapperConfiguration) throws Exception;
private String calculateSha256Sum(java.io.File) throws Exception;
private java.io.File getAndVerifyDistributionRoot(java.io.File, String) throws Exception;
private void verifyDownloadChecksum(String, java.io.File, String) throws Exception;
private java.util.List listDirs(java.io.File);
private void setExecutablePermissions(java.io.File);
private boolean isWindows();
private boolean deleteDir(java.io.File);
private void unzip(java.io.File, java.io.File) throws java.io.IOException;
private void copyInputStream(java.io.InputStream, java.io.OutputStream) throws java.io.IOException;
}
org/gradle/wrapper/Logger.class
package org.gradle.wrapper;
public synchronized class Logger implements Appendable {
private final boolean quiet;
public void Logger(boolean);
public void log(String);
public Appendable append(CharSequence);
public Appendable append(CharSequence, int, int);
public Appendable append(char);
}
org/gradle/wrapper/PathAssembler$LocalDistribution.class
package org.gradle.wrapper;
public synchronized class PathAssembler$LocalDistribution {
private final java.io.File distZip;
private final java.io.File distDir;
public void PathAssembler$LocalDistribution(PathAssembler, java.io.File, java.io.File);
public java.io.File getDistributionDir();
public java.io.File getZipFile();
}
org/gradle/wrapper/PathAssembler.class
package org.gradle.wrapper;
public synchronized class PathAssembler {
public static final String GRADLE_USER_HOME_STRING = GRADLE_USER_HOME;
public static final String PROJECT_STRING = PROJECT;
private java.io.File gradleUserHome;
public void PathAssembler();
public void PathAssembler(java.io.File);
public PathAssembler$LocalDistribution getDistribution(WrapperConfiguration);
private String rootDirName(String, WrapperConfiguration);
private String getHash(String);
private String removeExtension(String);
private String getDistName(java.net.URI);
private java.io.File getBaseDir(String);
}
org/gradle/wrapper/SystemPropertiesHandler.class
package org.gradle.wrapper;
public synchronized class SystemPropertiesHandler {
static final String SYSTEM_PROP_PREFIX = systemProp.;
public void SystemPropertiesHandler();
public static java.util.Map getSystemProperties(java.io.File);
}
org/gradle/wrapper/WrapperConfiguration.class
package org.gradle.wrapper;
public synchronized class WrapperConfiguration {
private java.net.URI distribution;
private String distributionBase;
private String distributionPath;
private String distributionSha256Sum;
private String zipBase;
private String zipPath;
public void WrapperConfiguration();
public java.net.URI getDistribution();
public void setDistribution(java.net.URI);
public String getDistributionBase();
public void setDistributionBase(String);
public String getDistributionPath();
public void setDistributionPath(String);
public String getDistributionSha256Sum();
public void setDistributionSha256Sum(String);
public String getZipBase();
public void setZipBase(String);
public String getZipPath();
public void setZipPath(String);
}
org/gradle/wrapper/WrapperExecutor.class
package org.gradle.wrapper;
public synchronized class WrapperExecutor {
public static final String DISTRIBUTION_URL_PROPERTY = distributionUrl;
public static final String DISTRIBUTION_BASE_PROPERTY = distributionBase;
public static final String DISTRIBUTION_PATH_PROPERTY = distributionPath;
public static final String DISTRIBUTION_SHA_256_SUM = distributionSha256Sum;
public static final String ZIP_STORE_BASE_PROPERTY = zipStoreBase;
public static final String ZIP_STORE_PATH_PROPERTY = zipStorePath;
private final java.util.Properties properties;
private final java.io.File propertiesFile;
private final WrapperConfiguration config;
public static WrapperExecutor forProjectDirectory(java.io.File);
public static WrapperExecutor forWrapperPropertiesFile(java.io.File);
void WrapperExecutor(java.io.File, java.util.Properties);
private java.net.URI prepareDistributionUri() throws java.net.URISyntaxException;
private java.net.URI readDistroUrl() throws java.net.URISyntaxException;
private static void loadProperties(java.io.File, java.util.Properties) throws java.io.IOException;
public java.net.URI getDistribution();
public WrapperConfiguration getConfiguration();
public void execute(String[], Install, BootstrapMainStarter) throws Exception;
private String getProperty(String);
private String getProperty(String, String);
private String getProperty(String, String, boolean);
private String reportMissingProperty(String);
}
gradle-wrapper-classpath.properties
projects=gradle-cli
runtime=
org/gradle/cli/AbstractCommandLineConverter.class
package org.gradle.cli;
public abstract synchronized class AbstractCommandLineConverter implements CommandLineConverter {
public void AbstractCommandLineConverter();
public Object convert(Iterable, Object) throws CommandLineArgumentException;
}
org/gradle/cli/AbstractPropertiesCommandLineConverter.class
package org.gradle.cli;
public abstract synchronized class AbstractPropertiesCommandLineConverter extends AbstractCommandLineConverter {
public void AbstractPropertiesCommandLineConverter();
protected abstract String getPropertyOption();
protected abstract String getPropertyOptionDetailed();
protected abstract String getPropertyOptionDescription();
public void configure(CommandLineParser);
public java.util.Map convert(ParsedCommandLine, java.util.Map) throws CommandLineArgumentException;
}
org/gradle/cli/CommandLineArgumentException.class
package org.gradle.cli;
public synchronized class CommandLineArgumentException extends RuntimeException {
public void CommandLineArgumentException(String);
public void CommandLineArgumentException(String, Throwable);
}
org/gradle/cli/CommandLineConverter.class
package org.gradle.cli;
public abstract interface CommandLineConverter {
public abstract Object convert(Iterable, Object) throws CommandLineArgumentException;
public abstract Object convert(ParsedCommandLine, Object) throws CommandLineArgumentException;
public abstract void configure(CommandLineParser);
}
org/gradle/cli/CommandLineOption.class
package org.gradle.cli;
public synchronized class CommandLineOption {
private final java.util.Set options;
private Class argumentType;
private String description;
private boolean incubating;
private final java.util.Set groupWith;
private boolean deprecated;
public void CommandLineOption(Iterable);
public java.util.Set getOptions();
public CommandLineOption hasArgument(Class);
public CommandLineOption hasArgument();
public CommandLineOption hasArguments();
public String getDescription();
private void appendMessage(StringBuilder, boolean, String);
public CommandLineOption hasDescription(String);
public boolean getAllowsArguments();
public boolean getAllowsMultipleArguments();
public CommandLineOption deprecated();
public CommandLineOption incubating();
public boolean isDeprecated();
public boolean isIncubating();
java.util.Set getGroupWith();
void groupWith(java.util.Set);
}
org/gradle/cli/CommandLineParser$1.class
package org.gradle.cli;
synchronized class CommandLineParser$1 {
}
org/gradle/cli/CommandLineParser$AfterFirstSubCommand.class
package org.gradle.cli;
synchronized class CommandLineParser$AfterFirstSubCommand extends CommandLineParser$OptionAwareParserState {
private void CommandLineParser$AfterFirstSubCommand(CommandLineParser, ParsedCommandLine);
public CommandLineParser$OptionParserState onStartOption(String, String);
}
org/gradle/cli/CommandLineParser$AfterOptions.class
package org.gradle.cli;
synchronized class CommandLineParser$AfterOptions extends CommandLineParser$ParserState {
private final ParsedCommandLine commandLine;
private void CommandLineParser$AfterOptions(ParsedCommandLine);
public boolean maybeStartOption(String);
public CommandLineParser$OptionParserState onStartOption(String, String);
public CommandLineParser$ParserState onNonOption(String);
}
org/gradle/cli/CommandLineParser$BeforeFirstSubCommand.class
package org.gradle.cli;
synchronized class CommandLineParser$BeforeFirstSubCommand extends CommandLineParser$OptionAwareParserState {
private void CommandLineParser$BeforeFirstSubCommand(CommandLineParser, ParsedCommandLine);
public CommandLineParser$OptionParserState onStartOption(String, String);
}
org/gradle/cli/CommandLineParser$CaseInsensitiveStringComparator.class
package org.gradle.cli;
final synchronized class CommandLineParser$CaseInsensitiveStringComparator implements java.util.Comparator {
private void CommandLineParser$CaseInsensitiveStringComparator();
public int compare(String, String);
}
org/gradle/cli/CommandLineParser$KnownOptionParserState.class
package org.gradle.cli;
synchronized class CommandLineParser$KnownOptionParserState extends CommandLineParser$OptionParserState {
private final CommandLineParser$OptionString optionString;
private final CommandLineOption option;
private final ParsedCommandLine commandLine;
private final CommandLineParser$ParserState state;
private final java.util.List values;
private void CommandLineParser$KnownOptionParserState(CommandLineParser, CommandLineParser$OptionString, CommandLineOption, ParsedCommandLine, CommandLineParser$ParserState);
public CommandLineParser$ParserState onArgument(String);
public CommandLineParser$ParserState onStartNextArg();
public boolean getHasArgument();
public CommandLineParser$ParserState onComplete();
}
org/gradle/cli/CommandLineParser$MissingOptionArgState.class
package org.gradle.cli;
synchronized class CommandLineParser$MissingOptionArgState extends CommandLineParser$ParserState {
private final CommandLineParser$OptionParserState option;
private void CommandLineParser$MissingOptionArgState(CommandLineParser$OptionParserState);
public boolean maybeStartOption(String);
public CommandLineParser$OptionParserState onStartOption(String, String);
public CommandLineParser$ParserState onNonOption(String);
public void onCommandLineEnd();
}
org/gradle/cli/CommandLineParser$OptionAwareParserState.class
package org.gradle.cli;
abstract synchronized class CommandLineParser$OptionAwareParserState extends CommandLineParser$ParserState {
protected final ParsedCommandLine commandLine;
protected void CommandLineParser$OptionAwareParserState(CommandLineParser, ParsedCommandLine);
public boolean maybeStartOption(String);
public CommandLineParser$ParserState onNonOption(String);
}
org/gradle/cli/CommandLineParser$OptionComparator.class
package org.gradle.cli;
final synchronized class CommandLineParser$OptionComparator implements java.util.Comparator {
private void CommandLineParser$OptionComparator();
public int compare(CommandLineOption, CommandLineOption);
}
org/gradle/cli/CommandLineParser$OptionParserState.class
package org.gradle.cli;
abstract synchronized class CommandLineParser$OptionParserState {
private void CommandLineParser$OptionParserState();
public abstract CommandLineParser$ParserState onStartNextArg();
public abstract CommandLineParser$ParserState onArgument(String);
public abstract boolean getHasArgument();
public abstract CommandLineParser$ParserState onComplete();
}
org/gradle/cli/CommandLineParser$OptionString.class
package org.gradle.cli;
synchronized class CommandLineParser$OptionString {
private final String arg;
private final String option;
private void CommandLineParser$OptionString(String, String);
public String getDisplayName();
public String toString();
}
org/gradle/cli/CommandLineParser$OptionStringComparator.class
package org.gradle.cli;
final synchronized class CommandLineParser$OptionStringComparator implements java.util.Comparator {
private void CommandLineParser$OptionStringComparator();
public int compare(String, String);
}
org/gradle/cli/CommandLineParser$ParserState.class
package org.gradle.cli;
abstract synchronized class CommandLineParser$ParserState {
private void CommandLineParser$ParserState();
public abstract boolean maybeStartOption(String);
boolean isOption(String);
public abstract CommandLineParser$OptionParserState onStartOption(String, String);
public abstract CommandLineParser$ParserState onNonOption(String);
public void onCommandLineEnd();
}
org/gradle/cli/CommandLineParser$UnknownOptionParserState.class
package org.gradle.cli;
synchronized class CommandLineParser$UnknownOptionParserState extends CommandLineParser$OptionParserState {
private final CommandLineParser$ParserState state;
private final String arg;
private final ParsedCommandLine commandLine;
private void CommandLineParser$UnknownOptionParserState(String, ParsedCommandLine, CommandLineParser$ParserState);
public boolean getHasArgument();
public CommandLineParser$ParserState onStartNextArg();
public CommandLineParser$ParserState onArgument(String);
public CommandLineParser$ParserState onComplete();
}
org/gradle/cli/CommandLineParser.class
package org.gradle.cli;
public synchronized class CommandLineParser {
private static final java.util.regex.Pattern OPTION_NAME_PATTERN;
private java.util.Map optionsByString;
private boolean allowMixedOptions;
private boolean allowUnknownOptions;
public void CommandLineParser();
public transient ParsedCommandLine parse(String[]) throws CommandLineArgumentException;
public ParsedCommandLine parse(Iterable) throws CommandLineArgumentException;
public CommandLineParser allowMixedSubcommandsAndOptions();
public CommandLineParser allowUnknownOptions();
public transient CommandLineParser allowOneOf(String[]);
public void printUsage(Appendable);
private static String join(java.util.Collection, String);
public transient CommandLineOption option(String[]);
static void
}
org/gradle/cli/ParsedCommandLine.class
package org.gradle.cli;
public synchronized class ParsedCommandLine {
private final java.util.Map optionsByString;
private final java.util.Set presentOptions;
private final java.util.Set removedOptions;
private final java.util.List extraArguments;
void ParsedCommandLine(Iterable);
public String toString();
private String quoteAndJoin(Iterable);
public boolean hasOption(String);
public boolean hadOptionRemoved(String);
public boolean hasAnyOption(java.util.Collection);
public ParsedCommandLineOption option(String);
public java.util.List getExtraArguments();
void addExtraValue(String);
ParsedCommandLineOption addOption(String, CommandLineOption);
void removeOption(CommandLineOption);
}
org/gradle/cli/ParsedCommandLineOption.class
package org.gradle.cli;
public synchronized class ParsedCommandLineOption {
private final java.util.List values;
public void ParsedCommandLineOption();
public String getValue();
public java.util.List getValues();
public void addArgument(String);
public boolean hasValue();
}
org/gradle/cli/ProjectPropertiesCommandLineConverter.class
package org.gradle.cli;
public synchronized class ProjectPropertiesCommandLineConverter extends AbstractPropertiesCommandLineConverter {
public void ProjectPropertiesCommandLineConverter();
protected String getPropertyOption();
protected String getPropertyOptionDetailed();
protected String getPropertyOptionDescription();
}
org/gradle/cli/SystemPropertiesCommandLineConverter.class
package org.gradle.cli;
public synchronized class SystemPropertiesCommandLineConverter extends AbstractPropertiesCommandLineConverter {
public void SystemPropertiesCommandLineConverter();
protected String getPropertyOption();
protected String getPropertyOptionDetailed();
protected String getPropertyOptionDescription();
}
gradle-cli-classpath.properties
projects=
runtime=
build-receipt.properties
versionNumber=4.6
gradle/wrapper/gradle-wrapper.properties
#Wed Jan 08 10:58:36 EAT 2020
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip
.gitignore
*.iml
.gradle
/local.properties
/.idea/caches
/.idea/libraries
/.idea/modules.xml
/.idea/workspace.xml
/.idea/navEditor.xml
/.idea/assetWizardSettings.xml
.DS_Store
/build
/captures
.externalNativeBuild
build.gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath ‘com.android.tools.build:gradle:3.4.1’
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
GeoCoding.iml
We provide professional writing services to help you score straight A’s by submitting custom written assignments that mirror your guidelines.
Get result-oriented writing and never worry about grades anymore. We follow the highest quality standards to make sure that you get perfect assignments.
Our writers have experience in dealing with papers of every educational level. You can surely rely on the expertise of our qualified professionals.
Your deadline is our threshold for success and we take it very seriously. We make sure you receive your papers before your predefined time.
Someone from our customer support team is always here to respond to your questions. So, hit us up if you have got any ambiguity or concern.
Sit back and relax while we help you out with writing your papers. We have an ultimate policy for keeping your personal and order-related details a secret.
We assure you that your document will be thoroughly checked for plagiarism and grammatical errors as we use highly authentic and licit sources.
Still reluctant about placing an order? Our 100% Moneyback Guarantee backs you up on rare occasions where you aren’t satisfied with the writing.
You don’t have to wait for an update for hours; you can track the progress of your order any time you want. We share the status after each step.
Although you can leverage our expertise for any writing task, we have a knack for creating flawless papers for the following document types.
Although you can leverage our expertise for any writing task, we have a knack for creating flawless papers for the following document types.
From brainstorming your paper's outline to perfecting its grammar, we perform every step carefully to make your paper worthy of A grade.
Hire your preferred writer anytime. Simply specify if you want your preferred expert to write your paper and we’ll make that happen.
Get an elaborate and authentic grammar check report with your work to have the grammar goodness sealed in your document.
You can purchase this feature if you want our writers to sum up your paper in the form of a concise and well-articulated summary.
You don’t have to worry about plagiarism anymore. Get a plagiarism report to certify the uniqueness of your work.
Join us for the best experience while seeking writing assistance in your college life. A good grade is all you need to boost up your academic excellence and we are all about it.
We create perfect papers according to the guidelines.
We seamlessly edit out errors from your papers.
We thoroughly read your final draft to identify errors.
Work with ultimate peace of mind because we ensure that your academic work is our responsibility and your grades are a top concern for us!
Dedication. Quality. Commitment. Punctuality
Here is what we have achieved so far. These numbers are evidence that we go the extra mile to make your college journey successful.
We have the most intuitive and minimalistic process so that you can easily place an order. Just follow a few steps to unlock success.
We understand your guidelines first before delivering any writing service. You can discuss your writing needs and we will have them evaluated by our dedicated team.
We write your papers in a standardized way. We complete your work in such a way that it turns out to be a perfect description of your guidelines.
We promise you excellent grades and academic excellence that you always longed for. Our writers stay in touch with you via email.