mirror of
https://github.com/YGGverse/hlsdk-portable.git
synced 2025-01-25 22:24:16 +00:00
add new mod-sample
This commit is contained in:
parent
e31e0663f3
commit
5383238f19
22
android/AndroidManifest.xml
Executable file
22
android/AndroidManifest.xml
Executable file
@ -0,0 +1,22 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Set your package name here -->
|
||||||
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
package="in.celest.xash3d.Cracklifecampaign"
|
||||||
|
android:versionCode="1"
|
||||||
|
android:versionName="1.4">
|
||||||
|
<uses-sdk android:minSdkVersion="3" android:targetSdkVersion="5"/>
|
||||||
|
<!-- Set your application name here -->
|
||||||
|
<application android:icon="@drawable/ic_launcher"
|
||||||
|
android:label="Crack-Life: Campaign Mode"
|
||||||
|
android:debuggable="true">
|
||||||
|
<!-- Set your launcher title here -->
|
||||||
|
<activity android:name="in.celest.xash3d.LauncherActivity"
|
||||||
|
android:label="Crack-Life: Campaign Mode"
|
||||||
|
android:windowSoftInputMode="stateHidden|adjustResize">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
<category android:name="android.intent.category.LAUNCHER" />
|
||||||
|
</intent-filter>
|
||||||
|
</activity>
|
||||||
|
</application>
|
||||||
|
</manifest>
|
0
android/assets/.gitkeep
Normal file
0
android/assets/.gitkeep
Normal file
13
android/build-manual.sh
Executable file
13
android/build-manual.sh
Executable file
@ -0,0 +1,13 @@
|
|||||||
|
ANDROID_JAR=../android-13.jar
|
||||||
|
AAPT=./../aapt
|
||||||
|
DX=./../dx
|
||||||
|
APKBUILDER=./../apkbuilder
|
||||||
|
NAME=mod
|
||||||
|
mkdir bin
|
||||||
|
mkdir bin/classes
|
||||||
|
$AAPT package -M AndroidManifest.xml -m -S res -I $ANDROID_JAR
|
||||||
|
$JAVA_HOME/bin/javac -d bin/classes -s bin/classes -cp $ANDROID_JAR src/in/celest/xash3d/LauncherActivity.java
|
||||||
|
$DX --dex --output=bin/classes.dex bin/classes/
|
||||||
|
/mnt/app/apktool/aapt package -f -M AndroidManifest.xml -S res -I $ANDROID_JAR -F bin/$NAME.apk.unaligned
|
||||||
|
$APKBUILDER bin/$NAME.apk -u -nf libs/ -rj libs -f bin/classes.dex -z bin/$NAME.apk.unaligned
|
||||||
|
java -jar /mnt/app/apktool/signapk.jar /mnt/app/apktool/testkey.x509.pem /mnt/app/apktool/testkey.pk8 bin/$NAME.apk bin/$NAME-signed.apk
|
6
android/build.sh
Executable file
6
android/build.sh
Executable file
@ -0,0 +1,6 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
TMPDIR=/home/build/tmp
|
||||||
|
python makepak.py pak/ assets/extras.pak
|
||||||
|
ndk-build -j2 $1 && ant debug
|
||||||
|
|
||||||
|
#ndk-build -j2 APP_ABI="armeabi-v7a-hard" && ant debug
|
92
android/build.xml
Executable file
92
android/build.xml
Executable file
@ -0,0 +1,92 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project name="mod" default="help">
|
||||||
|
|
||||||
|
<!-- The local.properties file is created and updated by the 'android' tool.
|
||||||
|
It contains the path to the SDK. It should *NOT* be checked into
|
||||||
|
Version Control Systems. -->
|
||||||
|
<property file="local.properties" />
|
||||||
|
|
||||||
|
<!-- The ant.properties file can be created by you. It is only edited by the
|
||||||
|
'android' tool to add properties to it.
|
||||||
|
This is the place to change some Ant specific build properties.
|
||||||
|
Here are some properties you may want to change/update:
|
||||||
|
|
||||||
|
source.dir
|
||||||
|
The name of the source directory. Default is 'src'.
|
||||||
|
out.dir
|
||||||
|
The name of the output directory. Default is 'bin'.
|
||||||
|
|
||||||
|
For other overridable properties, look at the beginning of the rules
|
||||||
|
files in the SDK, at tools/ant/build.xml
|
||||||
|
|
||||||
|
Properties related to the SDK location or the project target should
|
||||||
|
be updated using the 'android' tool with the 'update' action.
|
||||||
|
|
||||||
|
This file is an integral part of the build system for your
|
||||||
|
application and should be checked into Version Control Systems.
|
||||||
|
|
||||||
|
-->
|
||||||
|
<property file="ant.properties" />
|
||||||
|
|
||||||
|
<!-- if sdk.dir was not set from one of the property file, then
|
||||||
|
get it from the ANDROID_HOME env var.
|
||||||
|
This must be done before we load project.properties since
|
||||||
|
the proguard config can use sdk.dir -->
|
||||||
|
<property environment="env" />
|
||||||
|
<condition property="sdk.dir" value="${env.ANDROID_HOME}">
|
||||||
|
<isset property="env.ANDROID_HOME" />
|
||||||
|
</condition>
|
||||||
|
|
||||||
|
<!-- The project.properties file is created and updated by the 'android'
|
||||||
|
tool, as well as ADT.
|
||||||
|
|
||||||
|
This contains project specific properties such as project target, and library
|
||||||
|
dependencies. Lower level build properties are stored in ant.properties
|
||||||
|
(or in .classpath for Eclipse projects).
|
||||||
|
|
||||||
|
This file is an integral part of the build system for your
|
||||||
|
application and should be checked into Version Control Systems. -->
|
||||||
|
<loadproperties srcFile="project.properties" />
|
||||||
|
|
||||||
|
<!-- quick check on sdk.dir -->
|
||||||
|
<fail
|
||||||
|
message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through the ANDROID_HOME environment variable."
|
||||||
|
unless="sdk.dir"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Import per project custom build rules if present at the root of the project.
|
||||||
|
This is the place to put custom intermediary targets such as:
|
||||||
|
-pre-build
|
||||||
|
-pre-compile
|
||||||
|
-post-compile (This is typically used for code obfuscation.
|
||||||
|
Compiled code location: ${out.classes.absolute.dir}
|
||||||
|
If this is not done in place, override ${out.dex.input.absolute.dir})
|
||||||
|
-post-package
|
||||||
|
-post-build
|
||||||
|
-pre-clean
|
||||||
|
-->
|
||||||
|
<import file="custom_rules.xml" optional="true" />
|
||||||
|
|
||||||
|
<!-- Import the actual build file.
|
||||||
|
|
||||||
|
To customize existing targets, there are two options:
|
||||||
|
- Customize only one target:
|
||||||
|
- copy/paste the target into this file, *before* the
|
||||||
|
<import> task.
|
||||||
|
- customize it to your needs.
|
||||||
|
- Customize the whole content of build.xml
|
||||||
|
- copy/paste the content of the rules files (minus the top node)
|
||||||
|
into this file, replacing the <import> task.
|
||||||
|
- customize to your needs.
|
||||||
|
|
||||||
|
***********************
|
||||||
|
****** IMPORTANT ******
|
||||||
|
***********************
|
||||||
|
In all cases you must update the value of version-tag below to read 'custom' instead of an integer,
|
||||||
|
in order to avoid having your file be overridden by tools such as "android update project"
|
||||||
|
-->
|
||||||
|
<!-- version-tag: 1 -->
|
||||||
|
<import file="${sdk.dir}/tools/ant/build.xml" />
|
||||||
|
|
||||||
|
</project>
|
6
android/jni/Android.mk
Executable file
6
android/jni/Android.mk
Executable file
@ -0,0 +1,6 @@
|
|||||||
|
override TARGET_arm_release_CFLAGS :=
|
||||||
|
override TARGET_thumb_release_CFLAGS :=
|
||||||
|
override TARGET_arm_debug_CFLAGS :=
|
||||||
|
override TARGET_thumb_debug_CFLAGS :=
|
||||||
|
override TARGET_CFLAGS :=
|
||||||
|
include $(call all-subdir-makefiles)
|
11
android/jni/Application.mk
Executable file
11
android/jni/Application.mk
Executable file
@ -0,0 +1,11 @@
|
|||||||
|
CFLAGS_OPT := -O3 -fomit-frame-pointer -ggdb -funsafe-math-optimizations -ftree-vectorize -fgraphite-identity -floop-interchange -floop-block -funsafe-loop-optimizations -finline-limit=1024
|
||||||
|
CFLAGS_OPT_ARM := -mthumb -mfpu=neon -mcpu=cortex-a9 -pipe -mvectorize-with-neon-quad -DVECTORIZE_SINCOS
|
||||||
|
CFLAGS_OPT_ARMv5 :=-march=armv6 -mfpu=vfp -marm -pipe
|
||||||
|
CFLAGS_OPT_X86 := -mtune=atom -march=atom -mssse3 -mfpmath=sse -funroll-loops -pipe -DVECTORIZE_SINCOS
|
||||||
|
CFLAGS_HARDFP := -D_NDK_MATH_NO_SOFTFP=1 -mhard-float -mfloat-abi=hard -DLOAD_HARDFP -DSOFTFP_LINK
|
||||||
|
APPLICATIONMK_PATH = $(call my-dir)
|
||||||
|
|
||||||
|
XASH3D_CONFIG := $(APPLICATIONMK_PATH)/mod_config.mk
|
||||||
|
|
||||||
|
APP_ABI := x86 armeabi-v7a-hard armeabi
|
||||||
|
APP_MODULES := server
|
14
android/jni/mod_config.mk
Executable file
14
android/jni/mod_config.mk
Executable file
@ -0,0 +1,14 @@
|
|||||||
|
LOCAL_CFLAGS += $(CFLAGS_OPT)
|
||||||
|
ifeq ($(TARGET_ARCH_ABI),armeabi-v7a-hard)
|
||||||
|
LOCAL_CFLAGS += $(CFLAGS_OPT_ARM) $(CFLAGS_HARDFP)
|
||||||
|
endif
|
||||||
|
ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
|
||||||
|
LOCAL_CFLAGS += $(CFLAGS_OPT_ARM) -mfloat-abi=softfp
|
||||||
|
endif
|
||||||
|
ifeq ($(TARGET_ARCH_ABI),armeabi)
|
||||||
|
LOCAL_CFLAGS += $(CFLAGS_OPT_ARMv5)
|
||||||
|
endif
|
||||||
|
ifeq ($(TARGET_ARCH_ABI),x86)
|
||||||
|
LOCAL_CFLAGS += $(CFLAGS_OPT_X86)
|
||||||
|
endif
|
||||||
|
|
1
android/jni/server
Symbolic link
1
android/jni/server
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../dlls/
|
11
android/project.properties
Executable file
11
android/project.properties
Executable file
@ -0,0 +1,11 @@
|
|||||||
|
# This file is automatically generated by Android Tools.
|
||||||
|
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
|
||||||
|
#
|
||||||
|
# This file must be checked in Version Control Systems.
|
||||||
|
#
|
||||||
|
# To customize properties used by the Ant build system use,
|
||||||
|
# "build.properties", and override values to adapt the script to your
|
||||||
|
# project structure.
|
||||||
|
|
||||||
|
# Project target.
|
||||||
|
target=android-21
|
BIN
android/res/drawable/ic_launcher.png
Normal file
BIN
android/res/drawable/ic_launcher.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 13 KiB |
234
android/src/in/celest/xash3d/LauncherActivity.java
Executable file
234
android/src/in/celest/xash3d/LauncherActivity.java
Executable file
@ -0,0 +1,234 @@
|
|||||||
|
package in.celest.xash3d;
|
||||||
|
|
||||||
|
import android.app.*;
|
||||||
|
import android.content.*;
|
||||||
|
import android.graphics.*;
|
||||||
|
import android.os.*;
|
||||||
|
import android.text.*;
|
||||||
|
import android.text.style.*;
|
||||||
|
import android.view.*;
|
||||||
|
import android.widget.*;
|
||||||
|
import android.widget.LinearLayout.*;
|
||||||
|
|
||||||
|
public class LauncherActivity extends Activity {
|
||||||
|
static EditText cmdArgs;
|
||||||
|
static SharedPreferences mPref;
|
||||||
|
public static final int sdk = Integer.valueOf(Build.VERSION.SDK);
|
||||||
|
|
||||||
|
public SpannableString styleButtonString(String str)
|
||||||
|
{
|
||||||
|
if(sdk < 21)
|
||||||
|
str = str.toUpperCase();
|
||||||
|
|
||||||
|
SpannableString spanString = new SpannableString(str.toUpperCase());
|
||||||
|
|
||||||
|
if(sdk < 21)
|
||||||
|
spanString.setSpan(new StyleSpan(Typeface.BOLD), 0, str.length(), 0);
|
||||||
|
|
||||||
|
return spanString;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
|
||||||
|
|
||||||
|
// set theme
|
||||||
|
if ( sdk >= 21 )
|
||||||
|
super.setTheme( 0x01030224 );
|
||||||
|
else super.setTheme( 0x01030005 );
|
||||||
|
|
||||||
|
// Build layout
|
||||||
|
LinearLayout launcher = new LinearLayout(this);
|
||||||
|
launcher.setOrientation(LinearLayout.VERTICAL);
|
||||||
|
launcher.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
|
||||||
|
|
||||||
|
launcher.setBackgroundColor(0xFF252525);
|
||||||
|
TextView launcherTitle = new TextView(this);
|
||||||
|
LayoutParams titleparams = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
|
||||||
|
/* тут*/titleparams.setMargins(5,15,5,1);//размеры верхнего layout
|
||||||
|
LayoutParams buttonparams = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
|
||||||
|
buttonparams.setMargins(10,20,10,20);//размеры строки для ввода аргументов
|
||||||
|
launcherTitle.setLayoutParams(titleparams);
|
||||||
|
launcherTitle.setText("Crack-Life: Campaign Mode");
|
||||||
|
launcherTitle.setGravity(1);
|
||||||
|
//launcherTitle.setTextColor(0xFF4db017);
|
||||||
|
launcherTitle.setTextAppearance(this, android.R.attr.textAppearanceMedium);
|
||||||
|
launcherTitle.setTextSize(25);
|
||||||
|
launcherTitle.setBackgroundColor(0xFF555555);
|
||||||
|
/*launcherTitle.setCompoundDrawablePadding(10);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
launcherTitle.setCompoundDrawablesWithIntrinsicBounds(getApplicationContext().getPackageManager().getApplicationIcon(getPackageName()),null,null,null);
|
||||||
|
launcherTitle.setPadding(9,9,6,0);
|
||||||
|
}
|
||||||
|
catch(Exception e)
|
||||||
|
{
|
||||||
|
launcherTitle.setPadding(60,6,6,6);
|
||||||
|
}*/
|
||||||
|
launcher.addView(launcherTitle);
|
||||||
|
LinearLayout launcherBody = new LinearLayout(this);
|
||||||
|
launcherBody.setOrientation(LinearLayout.VERTICAL);
|
||||||
|
launcherBody.setLayoutParams(titleparams);
|
||||||
|
launcherBody.setBackgroundColor(0xFF454545);
|
||||||
|
LinearLayout launcherBorder = new LinearLayout(this);
|
||||||
|
launcherBorder.setLayoutParams(titleparams);
|
||||||
|
launcherBorder.setBackgroundColor(0xFF555555);
|
||||||
|
launcherBorder.setOrientation(LinearLayout.VERTICAL);
|
||||||
|
|
||||||
|
LinearLayout launcherBorder2 = new LinearLayout(this);
|
||||||
|
launcherBorder2.setLayoutParams(titleparams);
|
||||||
|
launcherBorder2.setOrientation(LinearLayout.VERTICAL);
|
||||||
|
launcherBorder2.setBackgroundColor(0xFF353535);
|
||||||
|
launcherBorder2.addView(launcherBody);
|
||||||
|
launcherBorder2.setPadding(10,0,10,10);
|
||||||
|
launcherBorder.addView(launcherBorder2);
|
||||||
|
launcherBorder.setPadding(10,0,10,20);
|
||||||
|
launcher.addView(launcherBorder);
|
||||||
|
|
||||||
|
TextView titleView = new TextView(this);
|
||||||
|
titleView.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
|
||||||
|
titleView.setText("Command-line arguments");
|
||||||
|
titleView.setTextAppearance(this, android.R.attr.textAppearanceLarge);
|
||||||
|
|
||||||
|
cmdArgs = new EditText(this);
|
||||||
|
cmdArgs.setLayoutParams(buttonparams);
|
||||||
|
cmdArgs.setSingleLine(true);
|
||||||
|
|
||||||
|
if(sdk < 21)
|
||||||
|
{
|
||||||
|
cmdArgs.setBackgroundColor(0xFF353535);
|
||||||
|
cmdArgs.setTextColor(0xFF333333);
|
||||||
|
cmdArgs.setPadding(5,5,5,5);
|
||||||
|
}
|
||||||
|
|
||||||
|
RelativeLayout panel = new RelativeLayout(this);
|
||||||
|
panel.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
|
||||||
|
|
||||||
|
Button startButton = new Button(this);
|
||||||
|
|
||||||
|
// Set launch button title here
|
||||||
|
startButton.setText(styleButtonString("Launch " + "Campaign Mode" + "!"));
|
||||||
|
RelativeLayout.LayoutParams buttonParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
|
||||||
|
buttonParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
|
||||||
|
startButton.setLayoutParams(buttonParams);
|
||||||
|
if(sdk < 21)
|
||||||
|
{
|
||||||
|
startButton.getBackground().setAlpha(96);
|
||||||
|
startButton.getBackground().invalidateSelf();
|
||||||
|
startButton.setTextColor(0xFFFFFFFF);
|
||||||
|
startButton.setTextAppearance(this, android.R.attr.textAppearanceLarge);
|
||||||
|
startButton.setTextSize(20);
|
||||||
|
}
|
||||||
|
startButton.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
startXash(v);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
launcherBody.addView(titleView);
|
||||||
|
launcherBody.addView(cmdArgs);
|
||||||
|
|
||||||
|
// Add other options here
|
||||||
|
|
||||||
|
panel.addView(startButton);
|
||||||
|
launcher.addView(panel);
|
||||||
|
setContentView(launcher);
|
||||||
|
mPref = getSharedPreferences("mod", 0);
|
||||||
|
cmdArgs.setText(mPref.getString("argv","-dev 3 -log"));
|
||||||
|
|
||||||
|
//ExtractAssets.extractPAK(this, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private Intent prepareIntent(Intent i)
|
||||||
|
{
|
||||||
|
String argv = cmdArgs.getText().toString();
|
||||||
|
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||||
|
|
||||||
|
SharedPreferences.Editor editor = mPref.edit();
|
||||||
|
|
||||||
|
editor.putString("argv", argv);
|
||||||
|
editor.commit();
|
||||||
|
|
||||||
|
// Command-line arguments
|
||||||
|
// if not passed, uses arguments from xash3d package
|
||||||
|
// Uncoment this if you are using client from other package
|
||||||
|
/*
|
||||||
|
String libserver = getFilesDir().getAbsolutePath().replace("/files","/lib/libserver_hardfp.so");
|
||||||
|
if( !(new File(libserver).exists()) )
|
||||||
|
libserver = getFilesDir().getAbsolutePath().replace("/files","/lib/libserver.so");
|
||||||
|
argv = "-dll "+ libserver + " " + argv;
|
||||||
|
*/
|
||||||
|
if(argv.length() != 0)
|
||||||
|
i.putExtra("argv", argv);
|
||||||
|
|
||||||
|
// default gamedir
|
||||||
|
// may be overriden by -game command-line option
|
||||||
|
// Uncomment to set gamedir here
|
||||||
|
i.putExtra("gamedir", "clcampaign");
|
||||||
|
|
||||||
|
// default library package
|
||||||
|
// if you are using client from other package (not from half-life),
|
||||||
|
// replace following line by:
|
||||||
|
/*i.putExtra("gamelibdir", "/data/data/<clientpkgname>/lib");*/
|
||||||
|
i.putExtra("gamelibdir", getFilesDir().getAbsolutePath().replace("/files","/lib"));
|
||||||
|
//i.putExtra("pakfile", getFilesDir().getAbsolutePath() + "/extras.pak");
|
||||||
|
|
||||||
|
// you may pass extra enviroment variables to game
|
||||||
|
// it is availiable from game code with getenv() function
|
||||||
|
/*
|
||||||
|
String envp[] =
|
||||||
|
{
|
||||||
|
"VAR1", "value1",
|
||||||
|
"VAR2", "value2"
|
||||||
|
};
|
||||||
|
i.putExtra("env", envp);
|
||||||
|
*/
|
||||||
|
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void startXash(View view)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Intent intent = new Intent();
|
||||||
|
intent.setAction("in.celest.xash3d.START");
|
||||||
|
intent = prepareIntent(intent);
|
||||||
|
startActivity(intent);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
catch(Exception e){}
|
||||||
|
// some samsung devices have
|
||||||
|
// completely broken intent resolver
|
||||||
|
// so try specify exact component here
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Intent intent = new Intent();
|
||||||
|
intent.setComponent(new ComponentName("in.celest.xash3d.hl.test", "in.celest.xash3d.XashActivity"));
|
||||||
|
intent = prepareIntent(intent);
|
||||||
|
startActivity(intent);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
catch(Exception e){}
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Intent intent = new Intent();
|
||||||
|
intent.setComponent(new ComponentName("in.celest.xash3d.hl", "in.celest.xash3d.XashActivity"));
|
||||||
|
intent = prepareIntent(intent);
|
||||||
|
startActivity(intent);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
catch(Exception e){}
|
||||||
|
new AlertDialog.Builder(this)
|
||||||
|
.setTitle("Error")
|
||||||
|
.setMessage("Failed to start Xash3D FWGS engine\nIs it installed?")
|
||||||
|
.setCancelable(false)
|
||||||
|
.setPositiveButton("Ok", new DialogInterface.OnClickListener()
|
||||||
|
{
|
||||||
|
public void onClick(DialogInterface i, int w){
|
||||||
|
LauncherActivity.this.finish();
|
||||||
|
}
|
||||||
|
}).show();
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user