diff --git a/README.md b/README.md
index d50c10a..efee6e8 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
# Gump SDK 5 for Android接入文档
-V5.0.0
-2018年11月02日
+V5.1.0
+2019年03月18日
## 版本概述
@@ -22,11 +22,11 @@ V5.0.0
}
dependencies {
//基础功能依赖,必须
- implementation 'com.gump:base:5.0.0'
+ implementation 'com.gump:base:5.1.0'
//登录功能依赖
- implementation 'com.gump:Passport:5.0.0'
+ implementation 'com.gump:Passport:5.1.0'
//支付功能依赖
- implementation 'com.gump:Payment:5.0.0'
+ implementation 'com.gump:Payment:5.1.0'
}
### 2.修改AndroidManifest.xml文件
@@ -52,9 +52,6 @@ V5.0.0
android:value="@integer/google_play_services_version"/>
### 3.1 初始化与配置
-*横竖屏控制,默认为横屏,参数为false即为竖屏
-
- SDKAgent.getSettings().setScreenLandscape(true);
*若要使用V4版支付请设置
@@ -65,6 +62,14 @@ V5.0.0
SDKAgent.init(Context,Appid,ChannelId);
### 3.2 登录接入
+AndroidManifest.xml配置:
+
+
构建Passport实例
passport = new Passport.Builder().context(Context).setListener(StateListener).build();
@@ -92,13 +97,25 @@ V5.0.0
super.onActivityResult(requestCode, resultCode, data);
}
-### 3.3 支付接入
+### 3.3 账号绑定
+
+ passport.link(Activity);
+
+### 3.4 账号切换
+切换到系统账号
+
+ passport.switchAccount(PlayerType.GamePlayer);
+切换gump账号
+
+ passport.switchAccount(PlayerType.GumpPlayer);
+### 3.5 支付接入
注册相应的Activity,具体如下:
diff --git a/app/build.gradle b/app/build.gradle
index 9b68fa3..1239853 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -5,11 +5,12 @@ android {
compileSdkVersion 27
defaultConfig {
applicationId "com.gump.passport.demo"
- minSdkVersion 14
+ minSdkVersion 15
targetSdkVersion 27
- versionCode 2
- versionName "1.0.1"
+ versionCode 9
+ versionName "1.0.9"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+ vectorDrawables.useSupportLibrary = true
}
buildTypes {
release {
@@ -33,15 +34,17 @@ android {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:27.1.1'
+ implementation 'com.android.support:support-v4:27.1.1'
+ implementation 'com.android.support:support-vector-drawable:27.1.1'
testImplementation 'junit:junit:4.12'
//基础功能依赖,必须
- implementation 'com.gump:base:5.0.0'
+ implementation 'com.gump:base:5.1.0'
// implementation project(':base')
- //登录功能依赖
- implementation 'com.gump:Passport:5.0.0'
+// 登录功能依赖
+ implementation 'com.gump:Passport:5.1.0'
// implementation project(':passport')
//支付功能依赖
- implementation 'com.gump:Payment:5.0.0'
+ implementation 'com.gump:Payment:5.1.0'
// implementation project(':payment')
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 9bc1a29..aa5589b 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -8,7 +8,9 @@
+
-
+ android:theme="@style/Theme.Translucent">
-
-
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/gump/passport/demo/AppCompatPreferenceActivity.java b/app/src/main/java/com/gump/passport/demo/AppCompatPreferenceActivity.java
new file mode 100644
index 0000000..6cca6e6
--- /dev/null
+++ b/app/src/main/java/com/gump/passport/demo/AppCompatPreferenceActivity.java
@@ -0,0 +1,109 @@
+package com.gump.passport.demo;
+
+import android.content.res.Configuration;
+import android.os.Bundle;
+import android.preference.PreferenceActivity;
+import android.support.annotation.LayoutRes;
+import android.support.annotation.Nullable;
+import android.support.v7.app.ActionBar;
+import android.support.v7.app.AppCompatDelegate;
+import android.support.v7.widget.Toolbar;
+import android.view.MenuInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+/**
+ * A {@link android.preference.PreferenceActivity} which implements and proxies the necessary calls
+ * to be used with AppCompat.
+ */
+public abstract class AppCompatPreferenceActivity extends PreferenceActivity {
+
+ private AppCompatDelegate mDelegate;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ getDelegate().installViewFactory();
+ getDelegate().onCreate(savedInstanceState);
+ super.onCreate(savedInstanceState);
+ }
+
+ @Override
+ protected void onPostCreate(Bundle savedInstanceState) {
+ super.onPostCreate(savedInstanceState);
+ getDelegate().onPostCreate(savedInstanceState);
+ }
+
+ public ActionBar getSupportActionBar() {
+ return getDelegate().getSupportActionBar();
+ }
+
+ public void setSupportActionBar(@Nullable Toolbar toolbar) {
+ getDelegate().setSupportActionBar(toolbar);
+ }
+
+ @Override
+ public MenuInflater getMenuInflater() {
+ return getDelegate().getMenuInflater();
+ }
+
+ @Override
+ public void setContentView(@LayoutRes int layoutResID) {
+ getDelegate().setContentView(layoutResID);
+ }
+
+ @Override
+ public void setContentView(View view) {
+ getDelegate().setContentView(view);
+ }
+
+ @Override
+ public void setContentView(View view, ViewGroup.LayoutParams params) {
+ getDelegate().setContentView(view, params);
+ }
+
+ @Override
+ public void addContentView(View view, ViewGroup.LayoutParams params) {
+ getDelegate().addContentView(view, params);
+ }
+
+ @Override
+ protected void onPostResume() {
+ super.onPostResume();
+ getDelegate().onPostResume();
+ }
+
+ @Override
+ protected void onTitleChanged(CharSequence title, int color) {
+ super.onTitleChanged(title, color);
+ getDelegate().setTitle(title);
+ }
+
+ @Override
+ public void onConfigurationChanged(Configuration newConfig) {
+ super.onConfigurationChanged(newConfig);
+ getDelegate().onConfigurationChanged(newConfig);
+ }
+
+ @Override
+ protected void onStop() {
+ super.onStop();
+ getDelegate().onStop();
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ getDelegate().onDestroy();
+ }
+
+ public void invalidateOptionsMenu() {
+ getDelegate().invalidateOptionsMenu();
+ }
+
+ private AppCompatDelegate getDelegate() {
+ if (mDelegate == null) {
+ mDelegate = AppCompatDelegate.create(this, null);
+ }
+ return mDelegate;
+ }
+}
diff --git a/app/src/main/java/com/gump/passport/demo/GameApplication.java b/app/src/main/java/com/gump/passport/demo/GameApplication.java
new file mode 100644
index 0000000..2dd5a12
--- /dev/null
+++ b/app/src/main/java/com/gump/passport/demo/GameApplication.java
@@ -0,0 +1,6 @@
+package com.gump.passport.demo;
+
+import android.app.Application;
+
+public class GameApplication extends Application {
+}
diff --git a/app/src/main/java/com/gump/passport/demo/MainActivity.java b/app/src/main/java/com/gump/passport/demo/MainActivity.java
index ccaa5bf..a57b9be 100644
--- a/app/src/main/java/com/gump/passport/demo/MainActivity.java
+++ b/app/src/main/java/com/gump/passport/demo/MainActivity.java
@@ -1,97 +1,194 @@
package com.gump.passport.demo;
import android.content.Intent;
+import android.content.SharedPreferences;
import android.os.Bundle;
+import android.preference.PreferenceManager;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
+import android.view.Menu;
+import android.view.MenuItem;
import android.view.View;
+import android.widget.Button;
import android.widget.TextView;
+import android.widget.Toast;
import com.gump.PaymentVersion;
import com.gump.SDKAgent;
import com.gump.gpassport.Actions;
import com.gump.gpassport.GamePlayer;
import com.gump.gpassport.Passport;
+import com.gump.gpassport.PlayerType;
import com.gump.gpassport.StateListener;
import com.gump.payment.Payment;
-import com.gump.payment.PurchaseCallback;
+import com.gump.payment.callback.PurchaseCallback;
+import com.gump.payment.callback.ResultCallback;
public class MainActivity extends AppCompatActivity implements StateListener, PurchaseCallback {
- private static final String TAG = "Gump Demo";
-
+ private static final String TAG = "MainActivity";
private Passport passport;
-
private TextView tvInfo;
+ private View mainLayout;
+ private Button btnLogin;
+
+ private GamePlayer currentPlayer;
+ private Button btnIab;
+ private Button btnPay;
+ private Button btnCheck;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
- SDKAgent.init(getApplicationContext(), "100", "1000");
-
- SDKAgent.getSettings().setDebug(true);
- SDKAgent.getSettings().setScreenLandscape(true);
- SDKAgent.getSettings().setPaymentVersion(PaymentVersion.V4);
tvInfo = findViewById(R.id.info);
- passport = new Passport.Builder().context(this).setListener(this).build();
- findViewById(R.id.login).setOnClickListener(new View.OnClickListener() {
+ mainLayout = findViewById(R.id.main_layout);
+ btnLogin = findViewById(R.id.login);
+ btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
passport.signIn(MainActivity.this);
}
});
-
- findViewById(R.id.iab).setOnClickListener(new View.OnClickListener() {
+ btnCheck = mainLayout.findViewById(R.id.check);
+ btnCheck.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- Bundle payInfo = new Bundle();
- payInfo.putString("product", "180010");
- payInfo.putFloat("amount", 0.1f);
- payInfo.putString("extraInfo", "This is demo!");
- payInfo.putString("serverId", "100");
- payInfo.putString("roleId", "41080");
+ initPay();
+ }
+ });
+ btnIab = mainLayout.findViewById(R.id.iab);
+ btnIab.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Bundle payInfo = assemblePayBundle();
Payment.launchIAP(MainActivity.this, payInfo, MainActivity.this);
}
});
- findViewById(R.id.pay).setOnClickListener(new View.OnClickListener() {
+ btnPay = mainLayout.findViewById(R.id.pay);
+ btnPay.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- Bundle payInfo = new Bundle();
- payInfo.putString("product", "wa2");
- payInfo.putFloat("amount", 0.1f);
- payInfo.putString("extraInfo", "This is demo!");
- payInfo.putString("serverId", "100");
- payInfo.putString("roleId", "41080");
+ Bundle payInfo = assemblePayBundle();
Payment.pay(MainActivity.this, payInfo, MainActivity.this);
}
});
+
+ mainLayout.findViewById(R.id.bind).setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ passport.link(MainActivity.this);
+ }
+ });
+
+ mainLayout.findViewById(R.id.switch_acc).setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ passport.switchAccount(PlayerType.GamePlayer);
+ }
+ });
+
+ mainLayout.findViewById(R.id.switch_gump).setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ passport.switchAccount(PlayerType.GumpPlayer);
+ }
+ });
+
+
+ SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
+ boolean mode = sp.getBoolean("key_mode", true);
+ String appId = sp.getString("key_appid", "100");
+ String channel = sp.getString("key_channel", "1000");
+ String payVersion = sp.getString("key_pay_version", "V3");
+
+ SDKAgent.init(getApplicationContext(), appId, channel);
+ SDKAgent.getSettings().setDebug(mode);
+ SDKAgent.getSettings().setPaymentVersion(PaymentVersion.valueOf(payVersion));
+
+ passport = new Passport.Builder().context(MainActivity.this).setListener(MainActivity.this).build();
+
+ }
+
+ private Bundle assemblePayBundle() {
+ SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
+ Bundle payInfo = new Bundle();
+ payInfo.putString("product", sp.getString("key_product", "10080"));
+ payInfo.putFloat("amount", sp.getFloat("key_amount", 0.1f));
+ payInfo.putString("extraInfo", sp.getString("key_extra", "test"));
+ payInfo.putString("serverId", sp.getString("key_server_id", "100"));
+ payInfo.putString("roleId", sp.getString("key_role_id", "41080"));
+ payInfo.putString("currency", sp.getString("key_currency", "THB"));
+ return payInfo;
+ }
+
+
+ private void initPay() {
+ btnCheck.setEnabled(false);
+ SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
+ String serverId = sp.getString("key_server_id", "100");
+ String roleId = sp.getString("key_role_id", "41080");
+ Payment.shouldUseCoPay(this, serverId, roleId, new ResultCallback() {
+ @Override
+ public void onResult(boolean isRisk) {
+ btnCheck.setEnabled(true);
+ btnIab.setEnabled(isRisk);
+ btnPay.setEnabled(!isRisk);
+ }
+ });
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.main, menu);
+ return super.onCreateOptionsMenu(menu);
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ if (item.getItemId() == R.id.setting) {
+ Intent intent = new Intent(this, SettingsActivity.class);
+ startActivity(intent);
+ return true;
+ }
+ return super.onOptionsItemSelected(item);
}
@Override
- protected void onResume() {
+ public void onResume() {
super.onResume();
passport.onResume();
}
@Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (!passport.onActivityResult(requestCode, resultCode, data))
super.onActivityResult(requestCode, resultCode, data);
}
@Override
public void onActionSucced(Actions action, GamePlayer player) {
- tvInfo.setText("login succed! gump id=" + player.getId() + ",playerType=" + player.getPlayerType());
+ switch (action) {
+ case SIGN:
+ currentPlayer = player;
+ tvInfo.setText("Login succed! gump id=" + player.getId() + ",playerType=" + player.getPlayerType());
+ btnLogin.setVisibility(View.GONE);
+ mainLayout.setVisibility(View.VISIBLE);
+ break;
+ case SWITCH:
+ tvInfo.setText("Switch account succed! Pls reboot the game!");
+ Toast.makeText(this, "The account has switched,pls reboot the Game!", Toast.LENGTH_LONG).show();
+ break;
+ }
}
@Override
- public void onActionFailured() {
- tvInfo.setText("login has error");
+ public void onActionFailured(Throwable e) {
+ tvInfo.setText("login has error:" + e.getMessage());
}
@Override
diff --git a/app/src/main/java/com/gump/passport/demo/SettingsActivity.java b/app/src/main/java/com/gump/passport/demo/SettingsActivity.java
new file mode 100644
index 0000000..020feb5
--- /dev/null
+++ b/app/src/main/java/com/gump/passport/demo/SettingsActivity.java
@@ -0,0 +1,235 @@
+package com.gump.passport.demo;
+
+import android.annotation.TargetApi;
+import android.content.Context;
+import android.content.Intent;
+import android.content.res.Configuration;
+import android.os.Build;
+import android.os.Bundle;
+import android.preference.ListPreference;
+import android.preference.Preference;
+import android.preference.PreferenceActivity;
+import android.preference.PreferenceFragment;
+import android.preference.PreferenceManager;
+import android.support.annotation.Nullable;
+import android.support.v4.app.NavUtils;
+import android.support.v7.app.ActionBar;
+import android.view.MenuItem;
+
+import java.util.List;
+
+/**
+ * A {@link PreferenceActivity} that presents a set of application settings. On
+ * handset devices, settings are presented as a single list. On tablets,
+ * settings are split by category, with category headers shown to the left of
+ * the list of settings.
+ *
+ * See
+ * Android Design: Settings for design guidelines and the Settings
+ * API Guide for more information on developing a Settings UI.
+ */
+public class SettingsActivity extends AppCompatPreferenceActivity {
+
+ /**
+ * A preference value change listener that updates the preference's summary
+ * to reflect its new value.
+ */
+ private static Preference.OnPreferenceChangeListener sBindPreferenceSummaryToValueListener = new Preference.OnPreferenceChangeListener() {
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object value) {
+ String stringValue = value.toString();
+
+ if (preference instanceof ListPreference) {
+ // For list preferences, look up the correct display value in
+ // the preference's 'entries' list.
+ ListPreference listPreference = (ListPreference) preference;
+ int index = listPreference.findIndexOfValue(stringValue);
+
+ // Set the summary to reflect the new value.
+ preference.setSummary(
+ index >= 0
+ ? listPreference.getEntries()[index]
+ : null);
+
+ } else {
+ // For all other preferences, set the summary to the value's
+ // simple string representation.
+ preference.setSummary(stringValue);
+ }
+ return true;
+ }
+ };
+
+ /**
+ * Helper method to determine if the device has an extra-large screen. For
+ * example, 10" tablets are extra-large.
+ */
+ private static boolean isXLargeTablet(Context context) {
+ return (context.getResources().getConfiguration().screenLayout
+ & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_XLARGE;
+ }
+
+ /**
+ * Binds a preference's summary to its value. More specifically, when the
+ * preference's value is changed, its summary (line of text below the
+ * preference title) is updated to reflect the value. The summary is also
+ * immediately updated upon calling this method. The exact display format is
+ * dependent on the type of preference.
+ *
+ * @see #sBindPreferenceSummaryToValueListener
+ */
+ private static void bindPreferenceSummaryToValue(Preference preference) {
+ // Set the listener to watch for value changes.
+ preference.setOnPreferenceChangeListener(sBindPreferenceSummaryToValueListener);
+
+ // Trigger the listener immediately with the preference's
+ // current value.
+ sBindPreferenceSummaryToValueListener.onPreferenceChange(preference,
+ PreferenceManager.getDefaultSharedPreferences(preference.getContext())
+ .getString(preference.getKey(), ""));
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setupActionBar();
+ }
+
+ /**
+ * Set up the {@link android.app.ActionBar}, if the API is available.
+ */
+ private void setupActionBar() {
+ ActionBar actionBar = getSupportActionBar();
+ if (actionBar != null) {
+ // Show the Up button in the action bar.
+ actionBar.setDisplayHomeAsUpEnabled(true);
+ }
+ }
+
+ @Override
+ public boolean onMenuItemSelected(int featureId, MenuItem item) {
+ int id = item.getItemId();
+ if (id == android.R.id.home) {
+ if (!super.onMenuItemSelected(featureId, item)) {
+ NavUtils.navigateUpFromSameTask(this);
+ }
+ return true;
+ }
+ return super.onMenuItemSelected(featureId, item);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean onIsMultiPane() {
+ return isXLargeTablet(this);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ @TargetApi(Build.VERSION_CODES.HONEYCOMB)
+ public void onBuildHeaders(List target) {
+ loadHeadersFromResource(R.xml.pref_headers, target);
+ }
+
+ /**
+ * This method stops fragment injection in malicious applications.
+ * Make sure to deny any unknown fragments here.
+ */
+ protected boolean isValidFragment(String fragmentName) {
+ return PreferenceFragment.class.getName().equals(fragmentName)
+ || GeneralPreferenceFragment.class.getName().equals(fragmentName)
+ || ParamPreferenceFragment.class.getName().equals(fragmentName);
+ }
+
+ /**
+ * sdk配置
+ */
+ @TargetApi(Build.VERSION_CODES.HONEYCOMB)
+ public static class GeneralPreferenceFragment extends PreferenceFragment {
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ addPreferencesFromResource(R.xml.pref_general);
+ setHasOptionsMenu(true);
+
+ // Bind the summaries of EditText/List/Dialog/Ringtone preferences
+ // to their values. When their values change, their summaries are
+ // updated to reflect the new value, per the Android Design
+ // guidelines.
+// bindPreferenceSummaryToValue(findPreference("key_mode"));
+ bindPreferenceSummaryToValue(findPreference("key_pay_version"));
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ int id = item.getItemId();
+ if (id == android.R.id.home) {
+ startActivity(new Intent(getActivity(), SettingsActivity.class));
+ return true;
+ }
+ return super.onOptionsItemSelected(item);
+ }
+ }
+
+ /**
+ * 基础参数配置
+ */
+ @TargetApi(Build.VERSION_CODES.HONEYCOMB)
+ public static class ParamPreferenceFragment extends PreferenceFragment {
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ addPreferencesFromResource(R.xml.pref_param);
+ setHasOptionsMenu(true);
+
+ // Bind the summaries of EditText/List/Dialog/Ringtone preferences
+ // to their values. When their values change, their summaries are
+ // updated to reflect the new value, per the Android Design
+ // guidelines.
+ bindPreferenceSummaryToValue(findPreference("key_appid"));
+ bindPreferenceSummaryToValue(findPreference("key_channel"));
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ int id = item.getItemId();
+ if (id == android.R.id.home) {
+ startActivity(new Intent(getActivity(), SettingsActivity.class));
+ return true;
+ }
+ return super.onOptionsItemSelected(item);
+ }
+ }
+
+ @TargetApi(Build.VERSION_CODES.HONEYCOMB)
+ public static class PaymentPreerenceFragment extends PreferenceFragment {
+ @Override
+ public void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ addPreferencesFromResource(R.xml.pref_payment);
+ setHasOptionsMenu(true);
+
+ bindPreferenceSummaryToValue(findPreference("key_server_id"));
+ bindPreferenceSummaryToValue(findPreference("key_role_id"));
+ bindPreferenceSummaryToValue(findPreference("key_product"));
+ bindPreferenceSummaryToValue(findPreference("key_amount"));
+ bindPreferenceSummaryToValue(findPreference("key_currency"));
+ bindPreferenceSummaryToValue(findPreference("key_extra"));
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ int id = item.getItemId();
+ if (id == android.R.id.home) {
+ startActivity(new Intent(getActivity(), SettingsActivity.class));
+ return true;
+ }
+ return super.onOptionsItemSelected(item);
+ }
+ }
+}
diff --git a/app/src/main/res/drawable/ic_attach_money_black_24dp.xml b/app/src/main/res/drawable/ic_attach_money_black_24dp.xml
new file mode 100644
index 0000000..b520fc9
--- /dev/null
+++ b/app/src/main/res/drawable/ic_attach_money_black_24dp.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_build_black_24dp.xml b/app/src/main/res/drawable/ic_build_black_24dp.xml
new file mode 100644
index 0000000..18f5676
--- /dev/null
+++ b/app/src/main/res/drawable/ic_build_black_24dp.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_text_fields_black_24dp.xml b/app/src/main/res/drawable/ic_text_fields_black_24dp.xml
new file mode 100644
index 0000000..dd81ddf
--- /dev/null
+++ b/app/src/main/res/drawable/ic_text_fields_black_24dp.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 8436d9c..9d0ab73 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -1,7 +1,6 @@
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:lines="2"/>
-
-
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:visibility="gone">
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/menu/main.xml b/app/src/main/res/menu/main.xml
new file mode 100644
index 0000000..a877a04
--- /dev/null
+++ b/app/src/main/res/menu/main.xml
@@ -0,0 +1,9 @@
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 7867e98..ae0129c 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1,3 +1,52 @@
PassportDemo
+
+
+ 设置
+
+
+
+
+ SDK设置
+
+ 线上环境
+ SDK是否使用线上正式服务器环境?
+
+ 支付界面方向
+ 是否使用横屏?
+
+ 支付版本
+
+
+ - V3版本
+ - V4版本
+
+
+ - V3
+ - V4
+
+
+
+
+ 基础参数设置
+ appId
+ 应用使用的appId
+ ChannelId
+ 应用使用的channelId
+
+ 支付参数
+ 区服id
+ serverId
+ 角色id
+ roleId
+ 商品名/商品id
+ product
+ 金额
+ 支付金额
+ 游戏透传参数
+ extra_info
+ 支付显示货币
+ currency
+
+
diff --git a/app/src/main/res/xml/pref_general.xml b/app/src/main/res/xml/pref_general.xml
new file mode 100644
index 0000000..491c7ac
--- /dev/null
+++ b/app/src/main/res/xml/pref_general.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/xml/pref_headers.xml b/app/src/main/res/xml/pref_headers.xml
new file mode 100644
index 0000000..3fc69d7
--- /dev/null
+++ b/app/src/main/res/xml/pref_headers.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/xml/pref_param.xml b/app/src/main/res/xml/pref_param.xml
new file mode 100644
index 0000000..af4d9fe
--- /dev/null
+++ b/app/src/main/res/xml/pref_param.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/xml/pref_payment.xml b/app/src/main/res/xml/pref_payment.xml
new file mode 100644
index 0000000..a87214e
--- /dev/null
+++ b/app/src/main/res/xml/pref_payment.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file