diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/.gitignore" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/.gitignore" new file mode 100644 index 0000000..39fb081 --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/.gitignore" @@ -0,0 +1,9 @@ +*.iml +.gradle +/local.properties +/.idea/workspace.xml +/.idea/libraries +.DS_Store +/build +/captures +.externalNativeBuild diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/.idea/compiler.xml" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/.idea/compiler.xml" new file mode 100644 index 0000000..96cc43e --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/.idea/compiler.xml" @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/.idea/copyright/profiles_settings.xml" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/.idea/copyright/profiles_settings.xml" new file mode 100644 index 0000000..e7bedf3 --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/.idea/copyright/profiles_settings.xml" @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/.idea/gradle.xml" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/.idea/gradle.xml" new file mode 100644 index 0000000..3343f6c --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/.idea/gradle.xml" @@ -0,0 +1,19 @@ + + + + + + \ No newline at end of file diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/.idea/misc.xml" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/.idea/misc.xml" new file mode 100644 index 0000000..3be1ace --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/.idea/misc.xml" @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1.8 + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/.idea/modules.xml" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/.idea/modules.xml" new file mode 100644 index 0000000..33d4eed --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/.idea/modules.xml" @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/.idea/runConfigurations.xml" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/.idea/runConfigurations.xml" new file mode 100644 index 0000000..7f68460 --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/.idea/runConfigurations.xml" @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/.gitignore" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/.gitignore" new file mode 100644 index 0000000..796b96d --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/.gitignore" @@ -0,0 +1 @@ +/build diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/build.gradle" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/build.gradle" new file mode 100644 index 0000000..b92f3a2 --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/build.gradle" @@ -0,0 +1,49 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 24 + buildToolsVersion "25.0.2" + defaultConfig { + applicationId "com.hzu.feirty.tabmenu" + minSdkVersion 15 + targetSdkVersion 24 + versionCode 1 + versionName "1.0" + testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + +dependencies { + compile fileTree(include: ['*.jar'], dir: 'libs') + androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { + exclude group: 'com.android.support', module: 'support-annotations' + }) + compile 'com.android.support:appcompat-v7:24.2.1' + testCompile 'junit:junit:4.12' + compile files('libs/activation.jar') + compile files('libs/additionnal.jar') + compile files('libs/mail.jar') + compile 'org.greenrobot:eventbus:3.0.0' + compile 'com.android.support.test.espresso:espresso-core:2.2.2' + compile files('libs/android-async-http-1.4.6.jar') + compile files('libs/asmack-android-6.jar') + compile files('libs/gson-2.5.jar') + compile files('libs/httpclient-4.3.6.jar') + compile files('libs/jg_filter_sdk_1.1.jar') + compile files('libs/litepal-1.5.1-src.jar') + compile files('libs/mid-sdk-2.20.jar') + compile files('libs/MobLogCollector.jar') + compile files('libs/MobTools.jar') + compile files('libs/org.apache.http.legacy.jar') + compile files('libs/ShareSDK-Core-2.6.3.jar') + compile files('libs/SMSSDK-1.3.1.jar') + compile files('libs/wup-1.0.0-SNAPSHOT.jar') + compile files('libs/Xg_sdk_v2.39_20150915_1121.jar') + compile files('libs/commons-email-1.1.jar') +} diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/MobLogCollector.jar" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/MobLogCollector.jar" new file mode 100644 index 0000000..2d58998 Binary files /dev/null and "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/MobLogCollector.jar" differ diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/MobTools.jar" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/MobTools.jar" new file mode 100644 index 0000000..1c02683 Binary files /dev/null and "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/MobTools.jar" differ diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/SMSSDK-1.3.1.jar" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/SMSSDK-1.3.1.jar" new file mode 100644 index 0000000..6f4caec Binary files /dev/null and "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/SMSSDK-1.3.1.jar" differ diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/ShareSDK-Core-2.6.3.jar" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/ShareSDK-Core-2.6.3.jar" new file mode 100644 index 0000000..af6be88 Binary files /dev/null and "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/ShareSDK-Core-2.6.3.jar" differ diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/Xg_sdk_v2.39_20150915_1121.jar" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/Xg_sdk_v2.39_20150915_1121.jar" new file mode 100644 index 0000000..3ad2ccc Binary files /dev/null and "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/Xg_sdk_v2.39_20150915_1121.jar" differ diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/activation.jar" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/activation.jar" new file mode 100644 index 0000000..614a03c Binary files /dev/null and "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/activation.jar" differ diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/additionnal.jar" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/additionnal.jar" new file mode 100644 index 0000000..aeb9611 Binary files /dev/null and "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/additionnal.jar" differ diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/android-async-http-1.4.6.jar" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/android-async-http-1.4.6.jar" new file mode 100644 index 0000000..70391cb Binary files /dev/null and "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/android-async-http-1.4.6.jar" differ diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/asmack-android-6.jar" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/asmack-android-6.jar" new file mode 100644 index 0000000..cebab96 Binary files /dev/null and "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/asmack-android-6.jar" differ diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/commons-email-1.1-javadoc.jar" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/commons-email-1.1-javadoc.jar" new file mode 100644 index 0000000..136818e Binary files /dev/null and "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/commons-email-1.1-javadoc.jar" differ diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/commons-email-1.1-sources.jar" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/commons-email-1.1-sources.jar" new file mode 100644 index 0000000..24043dd Binary files /dev/null and "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/commons-email-1.1-sources.jar" differ diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/commons-email-1.1.jar" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/commons-email-1.1.jar" new file mode 100644 index 0000000..e984731 Binary files /dev/null and "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/commons-email-1.1.jar" differ diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/gson-2.5.jar" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/gson-2.5.jar" new file mode 100644 index 0000000..5c35c5d Binary files /dev/null and "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/gson-2.5.jar" differ diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/httpclient-4.3.6.jar" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/httpclient-4.3.6.jar" new file mode 100644 index 0000000..35af4b1 Binary files /dev/null and "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/httpclient-4.3.6.jar" differ diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/jg_filter_sdk_1.1.jar" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/jg_filter_sdk_1.1.jar" new file mode 100644 index 0000000..bba19c1 Binary files /dev/null and "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/jg_filter_sdk_1.1.jar" differ diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/litepal-1.5.1-src.jar" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/litepal-1.5.1-src.jar" new file mode 100644 index 0000000..46d7f55 Binary files /dev/null and "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/litepal-1.5.1-src.jar" differ diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/mail.jar" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/mail.jar" new file mode 100644 index 0000000..ea594fd Binary files /dev/null and "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/mail.jar" differ diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/mid-sdk-2.20.jar" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/mid-sdk-2.20.jar" new file mode 100644 index 0000000..8942d61 Binary files /dev/null and "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/mid-sdk-2.20.jar" differ diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/org.apache.http.legacy.jar" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/org.apache.http.legacy.jar" new file mode 100644 index 0000000..5b89fbd Binary files /dev/null and "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/org.apache.http.legacy.jar" differ diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/wup-1.0.0-SNAPSHOT.jar" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/wup-1.0.0-SNAPSHOT.jar" new file mode 100644 index 0000000..93b8683 Binary files /dev/null and "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/libs/wup-1.0.0-SNAPSHOT.jar" differ diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/proguard-rules.pro" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/proguard-rules.pro" new file mode 100644 index 0000000..f2cc440 --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/proguard-rules.pro" @@ -0,0 +1,17 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in G:\Android\sdk/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# 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 *; +#} diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/androidTest/java/com/hzu/feirty/MailIM/ExampleInstrumentedTest.java" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/androidTest/java/com/hzu/feirty/MailIM/ExampleInstrumentedTest.java" new file mode 100644 index 0000000..e108fb4 --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/androidTest/java/com/hzu/feirty/MailIM/ExampleInstrumentedTest.java" @@ -0,0 +1,26 @@ +package com.hzu.feirty.MailIM; + +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.*; + +/** + * Instrumentation test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() throws Exception { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getTargetContext(); + + assertEquals("com.hzu.feirty.tabmenu", appContext.getPackageName()); + } +} diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/AndroidManifest.xml" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/AndroidManifest.xml" new file mode 100644 index 0000000..17958c0 --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/AndroidManifest.xml" @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/ic_launcher-web.png" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/ic_launcher-web.png" new file mode 100644 index 0000000..ed0032c Binary files /dev/null and "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/ic_launcher-web.png" differ diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/CourseActivity.java" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/CourseActivity.java" new file mode 100644 index 0000000..ea4332f --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/CourseActivity.java" @@ -0,0 +1,22 @@ +package com.hzu.feirty.MailIM.activity; + +import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; + +import com.hzu.feirty.MailIM.R; + +/** + * Created by Administrator on 2017-6-27. + */ + +public class CourseActivity extends AppCompatActivity { + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_open); + android.support.v7.app.ActionBar actionBar = getSupportActionBar(); + if(actionBar != null){ + actionBar.setHomeButtonEnabled(true); + actionBar.setDisplayHomeAsUpEnabled(true); + } + } +} diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/EditMailActivity.java" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/EditMailActivity.java" new file mode 100644 index 0000000..2e81453 --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/EditMailActivity.java" @@ -0,0 +1,254 @@ + +package com.hzu.feirty.MailIM.activity; + +import android.app.ProgressDialog; +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.os.Handler; +import android.support.v7.app.AppCompatActivity; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.Button; +import android.widget.EditText; +import android.widget.ListView; +import android.widget.TextView; +import android.widget.Toast; + +import com.hzu.feirty.MailIM.R; +import com.hzu.feirty.MailIM.db.Email; +import com.hzu.feirty.MailIM.entity.Ip; +import com.loopj.android.http.AsyncHttpClient; +import com.loopj.android.http.AsyncHttpResponseHandler; +import com.loopj.android.http.RequestParams; + +import org.apache.http.Header; +import org.json.JSONException; +import org.json.JSONObject; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; + +public class EditMailActivity extends AppCompatActivity { + + private static final String SMTPHOST = "smtphost"; + private static final String USERNAME = "username"; + private static final String PASSWORD = "password"; + private String url = Ip.ip + "/MailIM/DoGetMail?"; + private EditText et_addr, et_mailsubject, et_mailcontent; + private Button btn_cancel, btn_sent, btn_addattachment; + private ListView lv_mailattachment; + private int type; + private Email email; + private Handler handler; + private ArrayList attachments; + private MyAdapter adapter; + private Context context; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + context = this; + setContentView(R.layout.mailedit); + getExtra(); + init(); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (requestCode == 1 && resultCode == 1 && data != null) { + String filepath = data.getStringExtra("FILEPATH"); + if (filepath.length() > 0) { + lv_mailattachment.setVisibility(View.VISIBLE); + attachments.add(filepath); + adapter.notifyDataSetChanged(); + } + } + } + + private void init() { + et_addr = (EditText) findViewById(R.id.et_addr); + et_mailsubject = (EditText) findViewById(R.id.et_mailsubject); + et_mailcontent = (EditText) findViewById(R.id.et_mailcontent); + + lv_mailattachment = (ListView) findViewById(R.id.lv_mailattachment); + btn_addattachment = (Button) findViewById(R.id.btn_addattachment); + btn_cancel = (Button) findViewById(R.id.btn_cancel); + btn_sent = (Button) findViewById(R.id.btn_sent); + btn_addattachment.setOnClickListener(new OnClickListener() { + + @Override + public void onClick(View v) { + startActivityForResult(new Intent(EditMailActivity.this, FileExplorerActivity.class), 1); + } + }); + btn_cancel.setOnClickListener(new OnClickListener() { + + @Override + public void onClick(View v) { + EditMailActivity.this.finish(); + } + }); + btn_sent.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + String to =et_addr.getText().toString(); + String subject=et_mailsubject.getText().toString(); + String content = et_mailcontent.getText().toString(); + send(to,subject,content); + } + }); + /*btn_sent.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + new Thread(new Runnable() { + + @Override + public void run() { + try { + Email email = new Email(); + email.setTo(et_addr.getText().toString()); + email.setSubject(et_mailsubject.getText().toString()); + email.setContent(et_mailcontent.getText().toString()); + email.setAttachments(attachments); + + MailSenter mailSenter = new MailSenter(handler, + PreferencesUtil.getSharedStringData(context, SMTPHOST), PreferencesUtil.getSharedStringData(context, + USERNAME), + PreferencesUtil.getSharedStringData(context, PASSWORD)); + handler.obtainMessage(0).sendToTarget(); + mailSenter.send(email); + } catch (Exception e) { + e.printStackTrace(); + } + } + }).start(); + } + });*/ + handler = new MyHandler(this); + attachments = new ArrayList(); + lv_mailattachment.setAdapter(adapter = new MyAdapter()); + if (type == 1) { + et_addr.setText(email.getFrom()); + et_mailsubject.setText("回复:" + email.getSubject()); + } else if (type == 2) { + et_mailsubject.setText("转发:" + email.getSubject()); + et_mailcontent.setText(email.getContent()); + } + et_addr.setText("1050416617@qq.com"); + et_mailsubject.setText(""); + et_mailcontent.setText(""); + } + + private void getExtra() { + type = getIntent().getIntExtra("TYPE", 0); + email = (Email) getIntent().getSerializableExtra("EMAIL"); + } + + private class MyAdapter extends BaseAdapter { + + @Override + public View getView(final int position, View convertView, ViewGroup parent) { + TextView tv = new TextView(EditMailActivity.this); + tv.setText(attachments.get(position).substring(attachments.get(position).lastIndexOf("/") + + 1)); + tv.setOnClickListener(new OnClickListener() { + + @Override + public void onClick(View v) { + attachments.remove(position); + handler.obtainMessage(3).sendToTarget(); + } + }); + return tv; + } + + @Override + public long getItemId(int position) { + return position; + } + + @Override + public Object getItem(int position) { + return attachments.get(position); + } + + @Override + public int getCount() { + return attachments.size(); + } + } + + private static class MyHandler extends Handler { + + private WeakReference wrActivity; + private ProgressDialog pd; + + public MyHandler(EditMailActivity activity) { + this.wrActivity = new WeakReference(activity); + } + + @Override + public void handleMessage(android.os.Message msg) { + final EditMailActivity activity = wrActivity.get(); + switch (msg.what) { + case 0: + pd = ProgressDialog.show(activity.context, "发送邮件","正在发送....", true, false); + break; + case 1: + pd.dismiss(); + Toast.makeText(activity.getApplicationContext(), "发送成功!", + Toast.LENGTH_LONG).show(); + activity.finish(); + break; + case 3: + activity.adapter.notifyDataSetChanged(); + break; + default: + Toast.makeText(activity.context, "发送出现错误!", Toast.LENGTH_LONG).show(); + break; + } + }; + }; + + public void send(String to,String subject,String content){ + RequestParams params = new RequestParams(); + params.put("to", to); + params.put("subject", subject); + params.put("content",content); + params.put("action", "send"); + AsyncHttpClient client = new AsyncHttpClient(); + client.setConnectTimeout(5000); + client.post(url, params, new AsyncHttpResponseHandler(){ + @Override + public void onSuccess(int i, Header[] headers, byte[] responseBody) { + String str = new String(responseBody); + if (str != null) { + try { + JSONObject object = new JSONObject(str); + if (object.getString("code").equals("success")) { + Toast.makeText(EditMailActivity.this, "发送成功!", Toast.LENGTH_LONG).show(); + } else { + Toast.makeText(EditMailActivity.this, "发送失败!", Toast.LENGTH_LONG).show(); + } + } catch (JSONException e) { + e.printStackTrace(); + // btn_send.setEnabled(true); + } + } else { + // btn_send.setEnabled(true); + } + } + @Override + public void onFailure(int i, org.apache.http.Header[] headers, byte[] bytes, Throwable throwable) { + //DialogView.dismiss(); + //btn_send.setEnabled(true); + Toast.makeText(EditMailActivity.this, "网络连接失败,请查看网络设置", Toast.LENGTH_SHORT).show(); + } + }); + } + +} diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/FileExplorerActivity.java" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/FileExplorerActivity.java" new file mode 100644 index 0000000..df6e428 --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/FileExplorerActivity.java" @@ -0,0 +1,162 @@ + +package com.hzu.feirty.MailIM.activity; + +import android.app.Activity; +import android.content.Context; +import android.content.Intent; +import android.graphics.drawable.Drawable; +import android.os.Bundle; +import android.os.Environment; +import android.util.TypedValue; +import android.view.Gravity; +import android.view.View; +import android.view.ViewGroup; +import android.widget.AdapterView; +import android.widget.BaseAdapter; +import android.widget.ListView; +import android.widget.TextView; + +import com.hzu.feirty.MailIM.R; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + +public class FileExplorerActivity extends Activity { + + private ListView listview; + private List pathlist; + private String rootpath; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.explorer); + + listview = (ListView) findViewById(R.id.files_listview); + boolean sdCardExist = Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED); + if (sdCardExist) { + rootpath = Environment.getExternalStorageDirectory().toString(); + } + + getFileDir(rootpath); + listview.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView arg0, View arg1, int position, long arg3) { + File file = new File(pathlist.get(position)); + if (file.isDirectory()) { + try { + getFileDir(file.getPath()); + } catch (Exception e) { + getFileDir(file.getParent()); + } + } else { + backToPreviousActivity(file.getPath().toLowerCase(Locale.CHINA)); + } + } + }); + + } + + /** + + */ + private void backToPreviousActivity(String result) { + setResult(1, new Intent().putExtra("FILEPATH", result)); + finish(); + } + + /** + + */ + private void getFileDir(String filepath) { + ArrayList items = new ArrayList(); + pathlist = new ArrayList(); + File sfile = new File(filepath); + + File[] files = sfile.listFiles(); + for (File file : files) { + if (file.isDirectory()) { + items.add(0, file.getName()); + pathlist.add(0, file.getPath()); + } else { + items.add(file.getName()); + pathlist.add(file.getPath()); + } + } + if (!rootpath.equals(filepath)) { + items.add(0, ".."); + pathlist.add(0, sfile.getParent()); + } + listview.setAdapter(new FileAdapter(this, items, pathlist)); + } + + private class FileAdapter extends BaseAdapter { + + private List filenames; + private List filepaths; + private Context context; + + /** + + */ + public FileAdapter(Context context, List items, List pathlist) { + this.context = context; + this.filenames = items; + this.filepaths = pathlist; + } + + @Override + public int getCount() { + return filenames.size(); + } + + @Override + public Object getItem(int position) { + return filenames.get(position); + } + + @Override + public long getItemId(int position) { + return position; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + ViewHolder holder; + if (null == convertView) { + holder = new ViewHolder(); + holder.nameView = new TextView(context); + holder.nameView.setGravity(Gravity.CENTER_VERTICAL); + holder.nameView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20); + convertView = holder.nameView; + convertView.setTag(holder); + } else { + holder = (ViewHolder) convertView.getTag(); + } + + File file = new File(filepaths.get(position).toString()); + Drawable drawable; + if (filenames.get(position).toString().equals("..")) { + holder.nameView.setText("xxxx"); + drawable = getResources().getDrawable(R.drawable.explorer_back); + } else { + if (file.isDirectory()) { + drawable = getResources().getDrawable(R.drawable.explorer_folder); + } else { + drawable = getResources().getDrawable(R.drawable.explorer_file); + } + holder.nameView.setText(file.getName()); + } + drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight()); + holder.nameView.setCompoundDrawables(drawable, null, null, null); + return convertView; + } + + private class ViewHolder { + TextView nameView; + } + } + +} diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/IdentityActivity.java" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/IdentityActivity.java" new file mode 100644 index 0000000..3793dc0 --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/IdentityActivity.java" @@ -0,0 +1,8 @@ +package com.hzu.feirty.MailIM.activity; + +/** + * Created by Administrator on 2017-6-27. + */ + +public class IdentityActivity { +} diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/LoginActivity.java" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/LoginActivity.java" new file mode 100644 index 0000000..5b241d4 --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/LoginActivity.java" @@ -0,0 +1,241 @@ +package com.hzu.feirty.MailIM.activity; + +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.os.Handler; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.Toolbar; +import android.text.TextUtils; +import android.view.View; +import android.view.View.OnClickListener; +import android.widget.Button; +import android.widget.CheckBox; +import android.widget.CompoundButton; +import android.widget.CompoundButton.OnCheckedChangeListener; +import android.widget.EditText; +import android.widget.Toast; + +import com.hzu.feirty.MailIM.R; +import com.hzu.feirty.MailIM.entity.Ip; +import com.hzu.feirty.MailIM.utils.CookieUtil; +import com.hzu.feirty.MailIM.utils.FinalAsyncHttpClient; +import com.hzu.feirty.MailIM.utils.PreferencesUtil; +import com.loopj.android.http.AsyncHttpClient; +import com.loopj.android.http.AsyncHttpResponseHandler; +import com.loopj.android.http.PersistentCookieStore; +import com.loopj.android.http.RequestParams; +import org.apache.http.cookie.Cookie; +import org.json.JSONException; +import org.json.JSONObject; +import java.lang.ref.WeakReference; +import java.util.List; + + +public class LoginActivity extends AppCompatActivity { + + private EditText et_un, et_pw; //账号密码输入框 + private Button btn_login; //登陆按钮 + private Button btn_register; + private CheckBox cb_saveuser, cb_autologin; //记住密码、自动登陆 + private Context context; + private Handler handler; //Handler:接受子线程发送的数据, 并用此数据配合主线程更新UI + private Toolbar toolbar; + private MyApplication myapplication; + private static final String POP3HOST = "pop3host"; + private static final String SMTPHOST = "smtphost"; + private static final String SAVEUSER = "saveuser"; + private static final String AUTOLOGIN = "autologin"; + private static final String USERNAME = "username"; + private static final String PASSWORD = "password"; + private String url = Ip.ip + "/MailIM/DoGetUser?"; + private String url2 = Ip.ip + "/MailIM/DoGetMail?"; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.login); + //MyApplication myapplication = new MyApplication(); + //myapplication.addActivity(this); + /* if (getSupportActionBar() != null){ + getSupportActionBar().hide(); + }*/ + initView(); + Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); + context = this; + handler = new MyHandler(this); + //判断自动登陆的历史操作 + if (PreferencesUtil.getSharedBooleanData(context, AUTOLOGIN)) { + //TRUE则直接登陆 + login(); + } else { + //判断SVAEUSER的设置 + if (PreferencesUtil.getSharedBooleanData(context, SAVEUSER)) { + //TRUE则将历史用户信息显示 + //用户信息保存在PreferencesUtil() + cb_saveuser.setChecked(PreferencesUtil.getSharedBooleanData(context, SAVEUSER)); + et_un.setText(PreferencesUtil.getSharedStringData(context, USERNAME)); + et_pw.setText(PreferencesUtil.getSharedStringData(context, PASSWORD)); + } + setListener(); //监听集合 + + } + } + //自动登陆Checkbox控件的监听 + private void setListener() { + cb_autologin.setOnCheckedChangeListener(new OnCheckedChangeListener() { + + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + cb_saveuser.setEnabled(!isChecked); + if (isChecked) { + cb_saveuser.setChecked(isChecked); //勾自动登陆的操作,同时勾上保存用户Checkbox + } + } + }); + //登陆按钮的监听 + btn_login.setOnClickListener(new OnClickListener() { + + @Override + public void onClick(View v) { //先判断输入合法性 + if (TextUtils.isEmpty(et_un.getText()) || TextUtils.isEmpty(et_pw.getText())) { + Toast.makeText(getApplicationContext(), "用户名或密码不能为空", Toast.LENGTH_SHORT).show(); + return; + } + //保存属性信息到PreferencesUtil.setSharedBooleanData()方法 + PreferencesUtil.setSharedBooleanData(context, SAVEUSER, cb_saveuser.isChecked()); + PreferencesUtil.setSharedBooleanData(context, AUTOLOGIN, cb_autologin.isChecked()); + PreferencesUtil.setSharedStringData(context, USERNAME, et_un.getText().toString()); + PreferencesUtil.setSharedStringData(context, PASSWORD, et_pw.getText().toString()); + PreferencesUtil.setSharedStringData(context, POP3HOST,"pop.qq.com"); + PreferencesUtil.setSharedStringData(context, SMTPHOST, "smtp.qq.com"); + //PreferencesUtil.setSharedStringData(context, POP3HOST, ConnUtil.getPOP3Host(et_un.getText().toString())); + // PreferencesUtil.setSharedStringData(context, SMTPHOST, ConnUtil.getSMTPHost(et_un.getText().toString())); + //执行login()方法 + login(); + } + }); + btn_register.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + startActivity(new Intent(context, RegisterActivity.class)); + } + }); + } + + private void login() { + RequestParams params = new RequestParams(); + params.put("user", et_un.getText().toString()); + params.put("password", et_pw.getText().toString()); + params.put("action", "login"); + FinalAsyncHttpClient finalAsyncHttpClient = new FinalAsyncHttpClient(); + AsyncHttpClient client = finalAsyncHttpClient.getAsyncHttpClient(); + saveCookie(client); + PersistentCookieStore myCookieStore = new PersistentCookieStore(LoginActivity.this); + client.setCookieStore(myCookieStore); + client.post(url, params, new AsyncHttpResponseHandler() { + @Override + public void onSuccess(int i, org.apache.http.Header[] headers, byte[] responseBody) { + String str = new String(responseBody); + if (str != null) { + try { + JSONObject object = new JSONObject(str); + if (object.getString("code").equals("success")) { + CookieUtil.setCookies(getCookie()); + Toast.makeText(LoginActivity.this, "登陆成功!", Toast.LENGTH_SHORT).show(); + startActivity(new Intent(context, MainActivity.class)); + } else { + btn_login.setEnabled(true); + Toast.makeText(LoginActivity.this, "账号或密码有误,请重新输入", Toast.LENGTH_SHORT).show(); + } + } catch (JSONException e) { + e.printStackTrace(); + btn_login.setEnabled(true); + } + } else { + btn_login.setEnabled(true); + } + } + + @Override + public void onFailure(int i, org.apache.http.Header[] headers, byte[] bytes, Throwable throwable) { + //DialogView.dismiss(); + btn_login.setEnabled(true); + Toast.makeText(LoginActivity.this, "网络连接失败,请查看网络设置", Toast.LENGTH_SHORT).show(); + + } + }); + /*//子线程处理 + new Thread(new Runnable() { + @Override + //PreferencesUtil() 用户设置有关信息保存提取JAVABEAN类 + //ConnUtil() 邮箱发送的有关信息保存提取JAVABEAN类和邮箱协议的连接方法 + public void run() { + //调用ConnUtil中的login()方法,设置pop3host和邮箱地址、登陆密码 :pop3用于邮件接收的协议 + Store store = ConnUtil.login(PreferencesUtil.getSharedStringData(context, POP3HOST), PreferencesUtil.getSharedStringData(context, USERNAME), + PreferencesUtil.getSharedStringData(context, PASSWORD)); + if (store != null) { + //调用成功,保存store + //((MailApplication) getApplication()).setStore(store); + ((MailApplication)context.getApplicationContext()).setStore(store); + MailApplication a=new MailApplication(); + a.setStore(store); + //跳转到HomeActivity + startActivity(new Intent(context, MainActivity.class)); + finish(); + } else { + //不成功显示提示信息 + handler.obtainMessage(0).sendToTarget(); + } + } + }).start();*/ + } + //控件定义方法 + private void initView() { + et_un = (EditText) findViewById(R.id.et_un); + et_pw = (EditText) findViewById(R.id.et_pw); + btn_login = (Button) findViewById(R.id.btn_login); + btn_register = (Button) findViewById(R.id.btn_register); + cb_saveuser = (CheckBox) findViewById(R.id.cb_savepw); + cb_autologin = (CheckBox) findViewById(R.id.cb_autologin); + } + //接受子线程发送的数据, 并用此数据配合主线程更新UI + private static class MyHandler extends Handler { + + private WeakReference wrActivity; + + public MyHandler(LoginActivity activity) { + this.wrActivity = new WeakReference(activity); + } + + @Override + public void handleMessage(android.os.Message msg) { + final LoginActivity activity = wrActivity.get(); + switch (msg.what) { + case 0: + Toast.makeText(activity.getApplicationContext(), "用户名或密码不正确", Toast.LENGTH_SHORT).show(); + break; + case 1: + break; + default: + break; + } + }; + }; + + protected void saveCookie(AsyncHttpClient client) { + PersistentCookieStore cookieStore = new PersistentCookieStore(this); + client.setCookieStore(cookieStore); + } + + protected List getCookie(){ + PersistentCookieStore cookieStore = new PersistentCookieStore(this); + List cookies = cookieStore.getCookies(); + return cookies; + } + + public void clearCookie(){ + PersistentCookieStore cookieStore = new PersistentCookieStore(this); + cookieStore.clear(); + } +} diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/MailApplication.java" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/MailApplication.java" new file mode 100644 index 0000000..2a6b503 --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/MailApplication.java" @@ -0,0 +1,43 @@ + +package com.hzu.feirty.MailIM.activity; + +import android.app.Application; +import android.content.Context; + +import java.io.InputStream; +import java.util.ArrayList; + +import javax.mail.Store; + +public class MailApplication extends Application { + private static Context mContext; + private Store store; + private ArrayList attachmentsInputStreams; + public void onCreate(){ + super.onCreate(); + mContext=getApplicationContext(); + } + public Store getStore() { + return store; + } + + public void setStore(Store store) { + this.store = store; + } + + public ArrayList getAttachmentsInputStreams() { + return attachmentsInputStreams; + } + + public void setAttachmentsInputStreams(ArrayList attachmentsInputStreams) { + this.attachmentsInputStreams = attachmentsInputStreams; + } + + public static Context getmContext(){ + return mContext; + } + public void onLowMemory(){ + super.onLowMemory(); + } + +} diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/MailContentActivity.java" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/MailContentActivity.java" new file mode 100644 index 0000000..f7e3a1e --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/MailContentActivity.java" @@ -0,0 +1,66 @@ +package com.hzu.feirty.MailIM.activity; + +import android.os.Bundle; +import android.os.Handler; +import android.support.v7.app.AppCompatActivity; +import android.widget.ListView; +import android.widget.TextView; +import android.widget.Toast; +import com.hzu.feirty.MailIM.R; +import com.hzu.feirty.MailIM.db.Email; +import java.io.InputStream; +import java.lang.ref.WeakReference; +import java.util.ArrayList; + +public class MailContentActivity extends AppCompatActivity { + + private TextView tv_addr, tv_mailsubject, tv_mailcontent; + private ListView lv_mailattachment; + private ArrayList attachmentsInputStreams; + private Email email; + private Handler handler; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.mailcontent); + email = (Email) getIntent().getSerializableExtra("EMAIL"); + attachmentsInputStreams = ((MailApplication) getApplication()).getAttachmentsInputStreams(); + init(); + } + private void init() { + handler = new MyHandler(this); + tv_addr = (TextView) findViewById(R.id.tv_addr); + tv_mailsubject = (TextView) findViewById(R.id.tv_mailsubject); + tv_mailcontent = (TextView) findViewById(R.id.tv_mailcontent); +/* if (email.getAttachments().size() > 0) { + lv_mailattachment = (ListView) findViewById(R.id.lv_mailattachment); + lv_mailattachment.setVisibility(View.VISIBLE); + lv_mailattachment.setAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, email.getAttachments())); + }*/ + tv_addr.setText(email.getFrom()); + tv_mailsubject.setText(email.getSubject()); + tv_mailcontent.setText(email.getContent()); + } + + private static class MyHandler extends Handler { + + private WeakReference wrActivity; + + public MyHandler(MailContentActivity activity) { + this.wrActivity = new WeakReference(activity); + } + + @Override + public void handleMessage(android.os.Message msg) { + final MailContentActivity activity = wrActivity.get(); + switch (msg.what) { + case 0: + Toast.makeText(activity.getApplicationContext(), msg.obj.toString(), Toast.LENGTH_SHORT).show(); + break; + default: + break; + } + } + } +} diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/MainActivity.java" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/MainActivity.java" new file mode 100644 index 0000000..fc6c1b4 --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/MainActivity.java" @@ -0,0 +1,140 @@ +package com.hzu.feirty.MailIM.activity; + +import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; +import android.view.KeyEvent; +import android.view.Menu; +import android.view.MenuItem; +import android.view.Window; +import android.view.animation.AnimationUtils; +import android.widget.RadioGroup; +import android.widget.RadioGroup.OnCheckedChangeListener; +import android.widget.TabHost; +import android.widget.Toast; + +import com.hzu.feirty.MailIM.R; + +public class MainActivity extends AppCompatActivity { + // tab用参数 + private TabHost tabHost; + private long exitTime = 0; + private RadioGroup radiogroup; + private int menuid; + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + getSupportActionBar().setTitle("收发作业"); + radiogroup = (RadioGroup) findViewById(R.id.radiogroup); + tabHost = (TabHost) findViewById(android.R.id.tabhost); + tabHost.setup(); + tabHost.addTab(tabHost.newTabSpec("main").setIndicator("main") + .setContent(R.id.fragment_main)); + tabHost.addTab(tabHost.newTabSpec("mycenter").setIndicator("mycenter") + .setContent(R.id.fragment_mycenter)); + tabHost.addTab(tabHost.newTabSpec("search").setIndicator("search") + .setContent(R.id.fragment_search)); + radiogroup.setOnCheckedChangeListener(new OnCheckedChangeListener() { + + @Override + public void onCheckedChanged(RadioGroup group, int checkedId) { + menuid = checkedId; + int currentTab = tabHost.getCurrentTab(); + switch (checkedId) { + case R.id.radio_main: + tabHost.setCurrentTabByTag("main"); + //如果需要动画效果就使用 + setCurrentTabWithAnim(currentTab, 0, "main"); + getSupportActionBar().setTitle("收发作业"); + break; + case R.id.radio_mycenter: + //tabHost.setCurrentTabByTag("mycenter"); + setCurrentTabWithAnim(currentTab, 1, "mycenter"); + getSupportActionBar().setTitle("个人中心"); + + break; + case R.id.radio_search: + tabHost.setCurrentTabByTag("search"); + getSupportActionBar().setTitle("发现"); + } + // 刷新actionbar的menu + getWindow().invalidatePanelMenu(Window.FEATURE_OPTIONS_PANEL); + } + }); + + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + // Inflate the menu; this adds items to the action bar if it is present. + + switch (menuid) { + case R.id.radio_main: + getMenuInflater().inflate(R.menu.main, menu); + break; + case R.id.radio_mycenter: + menu.clear(); + break; + case R.id.radio_search: + menu.clear(); + break; + } + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + // Handle action bar item clicks here. The action bar will + // automatically handle clicks on the Home/Up button, so long + // as you specify a parent activity in AndroidManifest.xml. + int id = item.getItemId(); + if (id == R.id.action_settings) { + return true; + } + return super.onOptionsItemSelected(item); + } + + // 这个方法是关键,用来判断动画滑动的方向 + private void setCurrentTabWithAnim(int now, int next, String tag) { + if (now > next) { + tabHost.getCurrentView().startAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_out)); + tabHost.setCurrentTabByTag(tag); + tabHost.getCurrentView().startAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_in)); + } else { + tabHost.getCurrentView().startAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_out)); + tabHost.setCurrentTabByTag(tag); + tabHost.getCurrentView().startAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_in)); + } + } +/* @Override + public boolean onKeyDown(int keyCode, KeyEvent event) { + if(keyCode == KeyEvent.KEYCODE_BACK){ + long firstClickBack=System.currentTimeMillis(); + long secondClickBack = System.currentTimeMillis(); + if(secondClickBack - firstClickBack >1500){ + Toast.makeText(this, "再按一次退出每一天", Toast.LENGTH_SHORT).show(); + firstClickBack = secondClickBack; + return true; + }else{ + MyApplication.getInstance().exitApp(); + return true; + } + } + return super.onKeyDown(keyCode, event); + }*/ + @Override + public boolean onKeyDown(int keyCode, KeyEvent event) { + if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){ + if((System.currentTimeMillis()-exitTime) > 2000){ + Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show(); + exitTime = System.currentTimeMillis(); + } else { + //MyApplication.getInstance().exitApp(); + finish(); + System.exit(0); + } + return true; + } + return super.onKeyDown(keyCode, event); + } +} diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/MainFragment.java" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/MainFragment.java" new file mode 100644 index 0000000..242e1c7 --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/MainFragment.java" @@ -0,0 +1,342 @@ +package com.hzu.feirty.MailIM.activity; + +import android.app.ProgressDialog; +import android.content.Context; +import android.content.Intent; +import android.database.sqlite.SQLiteDatabase; +import android.os.Bundle; +import android.os.Handler; +import android.support.v4.app.Fragment; +import android.support.v7.app.AppCompatActivity; +import android.view.LayoutInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.ListView; +import android.widget.ProgressBar; +import android.widget.TextView; +import android.support.v7.widget.Toolbar; +import android.widget.Toast; + +import com.hzu.feirty.MailIM.R; +import com.hzu.feirty.MailIM.db.Email; +import com.hzu.feirty.MailIM.entity.Ip; +import com.hzu.feirty.MailIM.utils.IdentityReceiver; +import com.hzu.feirty.MailIM.utils.MailReceiver; +import com.hzu.feirty.MailIM.utils.PreferencesUtil; +import com.loopj.android.http.AsyncHttpClient; +import com.loopj.android.http.AsyncHttpResponseHandler; +import com.loopj.android.http.RequestParams; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.InputStream; +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + + +public class MainFragment extends Fragment{ + //邮箱的接收数据集合 + private ArrayList mailslist = new ArrayList(); + private List list; + private ProgressDialog pd; + private String url = Ip.ip + "/MailIM/DoGetMail?"; + private String url3 = Ip.ip + "/MailIM/DoGetType?"; + private ArrayList> attachmentsInputStreamsList = new ArrayList>(); + private Context context; + private String type="INBOX"; + private SQLiteDatabase db; + private Toolbar toolbar; + //适配器接口;连接后端数据和前端显示的适配器接口 + private MyAdapter myAdapter; + //显示列表 + private ListView lv_box; + //接收子线程的数据 + private Handler handler; + //邮件接收数据数组 + private List mailReceivers; + //进度条控件 + private ProgressBar pb_box; + private IdentityReceiver mReceiver; + private static final String IDENTITY = "saveidentity"; + private static final String USERNAME = "username"; + private static final String PASSWORD = "password"; + @Override + public void onCreate(Bundle savedInstanceState) { + // TODO Auto-generated method stub + super.onCreate(savedInstanceState); + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + View view= inflater.inflate(R.layout.fragment_main, null); + return view; + } + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + context = MainFragment.this.getActivity(); + pb_box = (ProgressBar) getActivity().findViewById(R.id.pb_box); + lv_box = (ListView) getActivity().findViewById(R.id.lv_box); + toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar); + AppCompatActivity activity = (AppCompatActivity) getActivity(); + //activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true); + if (activity.getSupportActionBar() != null){ + activity.getSupportActionBar().hide(); + } + toolbar.setTitle("首页"); + toolbar.inflateMenu(R.menu.base_toolbar_menu);//设置右上角的填充菜单 + toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() { + @Override + public boolean onMenuItemClick(MenuItem item) { + switch (item.getItemId()) { + case R.id.action_insert: + isType(); + break; + } + return true; + } + }); + myAdapter = new MyAdapter(); + lv_box.setAdapter(myAdapter); + handler = new MyHandler(MainFragment.this); + isType(); + /*if(str.equals("老师")||str.equals("学生")) { + receiveEmail();*/ + /*//子线程处理 + new Thread(new Runnable() { + @Override + public void run() { + try { + //MailHelper() 邮件接收功能操作方法,返回所有邮件接收的内容集合 + mailReceivers = MailHelper.getInstance(context).getMailByTeacher(type); + } catch (Exception e) { + e.printStackTrace(); + } + getMailsList(mailReceivers); + handler.obtainMessage(1).sendToTarget(); + } + }).start();*/ + /*}else if(str.equals("学生")){ + new Thread(new Runnable() { + @Override + public void run() { + try { + //MailHelper() 邮件接收功能操作方法,返回所有邮件接收的内容集合 + mailReceivers = MailHelper.getInstance(context).getMailByStudent(type); + } catch (Exception e) { + e.printStackTrace(); + } + getMailsList(mailReceivers); + handler.obtainMessage(1).sendToTarget(); + } + }).start(); + }else{ + new Thread(new Runnable() { + @Override + public void run() { + try { + //MailHelper() 邮件接收功能操作方法,返回所有邮件接收的内容集合 + mailReceivers = MailHelper.getInstance(context).getStudentId(type); + } catch (Exception e) { + e.printStackTrace(); + } + getMailsList(mailReceivers); + handler.obtainMessage(1).sendToTarget(); + } + }).start(); + }*/ + } + /** + * 将序列化的对象赋给email ,再将email加到mailslist集合中 + * @param + */ + /*private void getMailsList(List mails) { + if(mails!=null) { + for (MailReceiver mailReceiver : mails) { + Email email = new Email(); + try { + email.setMessageID(mailReceiver.getMessageID()); + email.setFrom(mailReceiver.getFrom()); + email.setTo(mailReceiver.getMailAddress("TO")); + email.setCc(mailReceiver.getMailAddress("CC")); + email.setBcc(mailReceiver.getMailAddress("BCC")); + email.setSubject(mailReceiver.getSubject()); + email.setSentdata(mailReceiver.getSentData()); + email.setContent(mailReceiver.getMailContent()); + email.setReplysign(mailReceiver.getReplySign()); + email.setHtml(mailReceiver.isHtml()); + email.setNews(mailReceiver.isNew()); + email.setAttachments(mailReceiver.getAttachments()); + email.setCharset(mailReceiver.getCharset()); + //保存每个邮件的信息到mailslist + attachmentsInputStreamsList.add(0, mailReceiver.getAttachmentsInputStreams()); + //list.add(0,email); + mailslist.add(0, email); + handler.obtainMessage(0).sendToTarget(); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + }*/ + + private class MyAdapter extends BaseAdapter { + + @Override + public int getCount() { + return mailslist.size(); + } + + @Override + public Object getItem(int position) { + return mailslist.get(position); + } + + @Override + public long getItemId(int position) { + return position; + } + @Override + public View getView(final int position, View convertView, ViewGroup parent) { + convertView = LayoutInflater.from(context).inflate(R.layout.mailbox_item, null); + TextView tv_sentdate = (TextView) convertView.findViewById(R.id.tv_sentdate); + TextView tv_new = (TextView) convertView.findViewById(R.id.tv_new); + TextView tv_subject = (TextView) convertView.findViewById(R.id.tv_subject); + tv_sentdate.setText(mailslist.get(position).getSentdata()); + if (mailslist.get(position).isNews()) { + tv_new.setVisibility(View.VISIBLE); + } + tv_subject.setText(mailslist.get(position).getSubject()); + //点击List的监听 + convertView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + //((MailApplication)getActivity().getApplication()).setAttachmentsInputStreams(attachmentsInputStreamsList.get(position)); + final Intent intent = new Intent(getActivity(), MailContentActivity.class).putExtra("EMAIL", mailslist.get(position)); + startActivity(intent); + } + }); + return convertView; + } + + } + private static class MyHandler extends Handler { + + private WeakReference wrActivity; + + public MyHandler(MainFragment activity) { + this.wrActivity = new WeakReference(activity); + } + @Override + public void handleMessage(android.os.Message msg) { + final MainFragment activity = wrActivity.get(); + switch (msg.what) { + case 0: + activity.myAdapter.notifyDataSetChanged(); + break; + case 1: + activity.pb_box.setVisibility(View.GONE); + break; + default: + break; + } + } + } + public void receiveEmail() { + RequestParams params = new RequestParams(); + String user =PreferencesUtil.getSharedStringData(MainFragment.this.getActivity(),USERNAME); + params.put("user", user); + params.put("action", "receive"); + AsyncHttpClient client = new AsyncHttpClient(); + client.setConnectTimeout(10000); + pd= ProgressDialog.show(MainFragment.this.getActivity(),null, "搜索作业中…"); + client.post(url, params, new AsyncHttpResponseHandler() { + @Override + public void onSuccess(int i, org.apache.http.Header[] headers, byte[] responseBody) { + String str = new String(responseBody); + if (str != null) { + try { + //handler.obtainMessage(0).sendToTarget(); + JSONObject object = new JSONObject(str); + if (object.getString("code").equals("success")) { + JSONArray array = object.getJSONArray("data"); + for (int a = 0; a < array.length(); a++) { + JSONObject item = array.getJSONObject(a); + Email mail = new Email(); + mail.setFrom(item.getString("from")); + mail.setSubject(item.getString("subject")); + mail.setContent(item.getString("content")); + mail.setSentdata(item.getString("time")); + //mail.setAttachments(object.getJSONArray("attachment")); + mailslist.add(0,mail); + } + handler.obtainMessage(1).sendToTarget(); + pd.dismiss(); + Toast.makeText(MainFragment.this.getActivity(),"接收成功",Toast.LENGTH_SHORT).show(); + } else { + // btn_login.setEnabled(true); + Toast.makeText(MainFragment.this.getActivity(),"接收失败",Toast.LENGTH_SHORT).show(); + pd.dismiss(); + + } + } catch (JSONException e) { + e.printStackTrace(); + // btn_login.setEnabled(true); + } + } else { + // btn_login.setEnabled(true); + } + } + @Override + public void onFailure(int i, org.apache.http.Header[] headers, byte[] bytes, Throwable throwable) { + //DialogView.dismiss(); + //btn_login.setEnabled(true); + pd.dismiss(); + Toast.makeText(MainFragment.this.getActivity(), "网络连接失败,请查看网络设置", Toast.LENGTH_SHORT).show(); + + } + }); + } + + private void isType(){ + RequestParams params = new RequestParams(); + params.put("action", "istype"); + String user =PreferencesUtil.getSharedStringData(MainFragment.this.getActivity(),"username"); + params.put("user", user); + AsyncHttpClient client = new AsyncHttpClient(); + client.setConnectTimeout(5000); + client.post(url3, params, new AsyncHttpResponseHandler() { + @Override + public void onSuccess(int i, org.apache.http.Header[] headers, byte[] responseBody) { + String str = new String(responseBody); + if (str != null) { + try { + JSONObject object = new JSONObject(str); + if (object.getString("code").equals("teacher")) { + Toast.makeText(MainFragment.this.getActivity(), "欢迎老师", Toast.LENGTH_SHORT).show(); + receiveEmail(); + } else if(object.getString("code").equals("student")){ + Toast.makeText(MainFragment.this.getActivity(), "欢迎学生", Toast.LENGTH_SHORT).show(); + receiveEmail(); + } + else { + // btn_login.setEnabled(true); + Toast.makeText(MainFragment.this.getActivity(), "请先选择身份", Toast.LENGTH_SHORT).show(); + } + } catch (JSONException e) { + e.printStackTrace(); + } + } else { + } + } + @Override + public void onFailure(int i, org.apache.http.Header[] headers, byte[] bytes, Throwable throwable) { + Toast.makeText(MainFragment.this.getActivity(), "网络连接失败,请查看网络设置", Toast.LENGTH_SHORT).show(); + } + }); + } +} diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/MyApplication.java" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/MyApplication.java" new file mode 100644 index 0000000..d88abb0 --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/MyApplication.java" @@ -0,0 +1,43 @@ +package com.hzu.feirty.MailIM.activity; + +import android.app.Activity; +import android.support.v7.app.AppCompatActivity; + +import java.util.ArrayList; + +/** + * Created by Administrator on 2017-7-19. + */ + +public class MyApplication extends AppCompatActivity{ + public static ArrayList list; + private static MyApplication myApp = null; + + //要保证每个Activity中使用的MyApplication都是同一个,就用到了单例模式 + //单例模式:只有一个对象,也就是上面的那个myApp只实例化一次 + //由于MyApplication继承自Application,复写的构造函数访问权限不能低于父类的,所以不能为private + //所以我们在这里实现一个伪单例模式 + public static MyApplication getInstance(){ + if(myApp == null ){ + myApp = new MyApplication(); + list = new ArrayList(); + } + return myApp; + } + /** + * 添加activity到数组中 + * @param activity + */ + public void addActivity(Activity activity){ + list.add(activity); + } + + /** + * 退出应用,结束所有activity + */ + public void exitApp(){ + for (Activity activity : list) { + activity.finish(); + } + } + } diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/MyCenterFragment.java" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/MyCenterFragment.java" new file mode 100644 index 0000000..2806362 --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/MyCenterFragment.java" @@ -0,0 +1,429 @@ +package com.hzu.feirty.MailIM.activity; +import android.app.Activity; +import android.app.Dialog; +import android.app.ProgressDialog; +import android.content.DialogInterface; +import android.content.Intent; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.support.v4.app.Fragment; +import android.support.v7.app.AlertDialog; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.Toolbar; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.LinearLayout; +import android.widget.TextView; +import android.widget.Toast; + +import com.hzu.feirty.MailIM.R; +import com.hzu.feirty.MailIM.db.Email; +import com.hzu.feirty.MailIM.entity.Ip; +import com.hzu.feirty.MailIM.utils.PreferencesUtil; +import com.loopj.android.http.AsyncHttpClient; +import com.loopj.android.http.AsyncHttpResponseHandler; +import com.loopj.android.http.RequestParams; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.ArrayList; + + +public class MyCenterFragment extends Fragment { + private TextView my_context; + private TextView my_works; + private TextView my_teachers; + private ProgressDialog pd; + private Toolbar toolbar; + private LinearLayout setting; + private ArrayList mails = new ArrayList(); + private static final String PWD="teacher_pwd"; + private LinearLayout ll_1; + private LinearLayout identity; + private LinearLayout receivework; + private LinearLayout checkwork; + final String items[] = { "学生","老师"}; + private static final String IDENTITY = "saveidentity"; + private static final String ISNULL= "isnull"; + private String url = Ip.ip + "/MailIM/DoGetUser?"; + private String url2 = Ip.ip + "/MailIM/DoGetMail?"; + private String url3 = Ip.ip + "/MailIM/DoGetType?"; + @Override + public void onCreate(Bundle savedInstanceState) { + // TODO Auto-generated method stub + super.onCreate(savedInstanceState); + } + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + View view= inflater.inflate(R.layout.fragment_mycenter, null); + return view; + } + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + my_context = (TextView) getActivity().findViewById(R.id.my_context); + ll_1 = (LinearLayout) getActivity().findViewById(R.id.ll_1); + identity = (LinearLayout) getActivity().findViewById(R.id.identity); + receivework = (LinearLayout) getActivity().findViewById(R.id.receivework); + checkwork = (LinearLayout) getActivity().findViewById(R.id.checkwork); + setting = (LinearLayout) getActivity().findViewById(R.id.setting); + toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar); + AppCompatActivity activity = (AppCompatActivity) getActivity(); + //activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true); + if (activity.getSupportActionBar() != null){ + activity.getSupportActionBar().hide(); + } + ll_1.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(getActivity(),CourseActivity.class); + startActivity(intent); + } + }); + setting.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + isType(); + } + }); + checkwork.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + //receiveEmail(); + } + }); + receivework.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Dialog dialog=new AlertDialog.Builder(MyCenterFragment.this.getActivity()) + .setTitle("提示") + //.setIcon(R.drawable.ic_launcher) + .setMessage("确认收作业吗?") + //相当于点击确认按钮 + .setPositiveButton("确认", new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + pd = ProgressDialog.show(MyCenterFragment.this.getActivity(), null, "正在打包发送…"); + receiveHomework(); + } + }) + //相当于点击取消按钮 + .setNegativeButton("取消", new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + // TODO Auto-generated method stub + + } + }) + .create(); + dialog.show(); + /*pd= ProgressDialog.show(MyCenterFragment.this.getActivity(), "收作业", "正在打包发送…"); + handler.sendEmptyMessage(0);*/ + + + } + }); + identity.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + setType(); + } + }); + } + private Handler handler =new Handler(){ + @Override + //当有消息发送出来的时候就执行Handler的这个方法 + public void handleMessage(Message msg){ + super.handleMessage(msg); + //只要执行到这里就关闭对话框 + pd.dismiss(); + } + }; + @Override + public void onAttach(Activity activity) { + super.onAttach(activity); + } + public void receiveEmail() { + RequestParams params = new RequestParams(); + params.put("user", "abc"); + params.put("action", "receive"); + AsyncHttpClient client = new AsyncHttpClient(); + client.setConnectTimeout(5000); + client.post(url, params, new AsyncHttpResponseHandler() { + @Override + public void onSuccess(int i, org.apache.http.Header[] headers, byte[] responseBody) { + String str = new String(responseBody); + if (str != null) { + try { + JSONObject object = new JSONObject(str); + if (object.getString("code").equals("success")) { + JSONArray array = object.getJSONArray("data"); + for (int a = 0; a < array.length(); a++) { + JSONObject item = array.getJSONObject(a); + Email mail = new Email(); + mail.setFrom(item.getString("from")); + mail.setSubject(item.getString("subject")); + mail.setContent(item.getString("content")); + mail.setSentdata(item.getString("time")); + //mail.setAttachments(object.getJSONArray("attachment")); + mails.add(0,mail); + } + Toast.makeText(MyCenterFragment.this.getActivity(),"接收成功",Toast.LENGTH_SHORT).show(); + } else { + // btn_login.setEnabled(true); + Toast.makeText(MyCenterFragment.this.getActivity(),"接收失败",Toast.LENGTH_SHORT).show(); + + } + } catch (JSONException e) { + e.printStackTrace(); + } + } else { + } + } + @Override + public void onFailure(int i, org.apache.http.Header[] headers, byte[] bytes, Throwable throwable) { + Toast.makeText(MyCenterFragment.this.getActivity(), "网络连接失败,请查看网络设置", Toast.LENGTH_SHORT).show(); + + } + }); + } + private void downlode(){ + RequestParams params = new RequestParams(); + params.put("action", "receive2"); + AsyncHttpClient client = new AsyncHttpClient(); + client.setConnectTimeout(5000); + client.post(url2, params, new AsyncHttpResponseHandler() { + @Override + public void onSuccess(int i, org.apache.http.Header[] headers, byte[] responseBody) { + String str = new String(responseBody); + if (str != null) { + try { + JSONObject object = new JSONObject(str); + if (object.getString("code").equals("success")) { + Toast.makeText(MyCenterFragment.this.getActivity(), "下载成功!", Toast.LENGTH_SHORT).show(); + } else { + // btn_login.setEnabled(true); + Toast.makeText(MyCenterFragment.this.getActivity(), "下载失败!", Toast.LENGTH_SHORT).show(); + } + } catch (JSONException e) { + e.printStackTrace(); + } + } else { + } + } + + @Override + public void onFailure(int i, org.apache.http.Header[] headers, byte[] bytes, Throwable throwable) { + //DialogView.dismiss(); + //btn_login.setEnabled(true); + Toast.makeText(MyCenterFragment.this.getActivity(), "网络连接失败,请查看网络设置", Toast.LENGTH_SHORT).show(); + } + }); + } + private void number(){ + RequestParams params = new RequestParams(); + String user =PreferencesUtil.getSharedStringData(MyCenterFragment.this.getActivity(),"username"); + params.put("user", user); + params.put("action", "number"); + AsyncHttpClient client = new AsyncHttpClient(); + client.setConnectTimeout(5000); + client.post(url2, params, new AsyncHttpResponseHandler() { + @Override + public void onSuccess(int i, org.apache.http.Header[] headers, byte[] responseBody) { + String str = new String(responseBody); + if (str != null) { + try { + JSONObject object = new JSONObject(str); + if (object.getString("code").equals("success")) { + Toast.makeText(MyCenterFragment.this.getActivity(), "添加成功!", Toast.LENGTH_SHORT).show(); + + } else { + // btn_login.setEnabled(true); + Toast.makeText(MyCenterFragment.this.getActivity(), "添加失败!", Toast.LENGTH_SHORT).show(); + } + } catch (JSONException e) { + e.printStackTrace(); + } + } else { + } + } + + @Override + public void onFailure(int i, org.apache.http.Header[] headers, byte[] bytes, Throwable throwable) { + Toast.makeText(MyCenterFragment.this.getActivity(), "网络连接失败,请查看网络设置", Toast.LENGTH_SHORT).show(); + } + }); + } + private void receiveHomework(){ + RequestParams params = new RequestParams(); + String user =PreferencesUtil.getSharedStringData(MyCenterFragment.this.getActivity(),"username"); + params.put("user", user); + params.put("action", "RECEIVEHOMEWORK"); + AsyncHttpClient client = new AsyncHttpClient(); + client.setConnectTimeout(10000); + //receiveHomework(); + client.post(url2, params, new AsyncHttpResponseHandler() { + @Override + public void onSuccess(int i, org.apache.http.Header[] headers, byte[] responseBody) { + String str = new String(responseBody); + if (str != null) { + try { + JSONObject object = new JSONObject(str); + if(object.getString("code").equals("noidentry")){ + handler.sendEmptyMessage(0); + Toast.makeText(MyCenterFragment.this.getActivity(), "不允许非教师操作", Toast.LENGTH_SHORT).show(); + }else if(object.getString("code").equals("nomail")){ + handler.sendEmptyMessage(0); + Toast.makeText(MyCenterFragment.this.getActivity(), "请先设置工作邮箱", Toast.LENGTH_SHORT).show(); + }else { + if (object.getString("code").equals("success")) { + handler.sendEmptyMessage(0); + Toast.makeText(MyCenterFragment.this.getActivity(), "收作业成功,请及时查收工作邮箱", Toast.LENGTH_SHORT).show(); + } else { + handler.sendEmptyMessage(0); + Toast.makeText(MyCenterFragment.this.getActivity(), "未知错误!", Toast.LENGTH_SHORT).show(); + } + } + } catch (JSONException e) { + e.printStackTrace(); + } + } else { + } + } + @Override + public void onFailure(int i, org.apache.http.Header[] headers, byte[] bytes, Throwable throwable) { + //DialogView.dismiss(); + //btn_login.setEnabled(true); + handler.sendEmptyMessage(0); + Toast.makeText(MyCenterFragment.this.getActivity(), "网络连接失败,请查看网络设置", Toast.LENGTH_SHORT).show(); + } + }); + } + private void isType(){ + RequestParams params = new RequestParams(); + params.put("action", "istype"); + String user =PreferencesUtil.getSharedStringData(MyCenterFragment.this.getActivity(),"username"); + params.put("user", user); + AsyncHttpClient client = new AsyncHttpClient(); + client.setConnectTimeout(5000); + client.post(url3, params, new AsyncHttpResponseHandler() { + @Override + public void onSuccess(int i, org.apache.http.Header[] headers, byte[] responseBody) { + String str = new String(responseBody); + if (str != null) { + try { + JSONObject object = new JSONObject(str); + if (object.getString("code").equals("teacher")) { + Intent intent = new Intent(getActivity(),TeacherSetActivity.class); + startActivity(intent); + + } else if(object.getString("code").equals("student")){ + Intent intent = new Intent(getActivity(),StudentSetActivity.class); + startActivity(intent); + } + else { + // btn_login.setEnabled(true); + Toast.makeText(MyCenterFragment.this.getActivity(), "请先选择身份", Toast.LENGTH_SHORT).show(); + } + } catch (JSONException e) { + e.printStackTrace(); + } + } else { + } + } + + @Override + public void onFailure(int i, org.apache.http.Header[] headers, byte[] bytes, Throwable throwable) { + Toast.makeText(MyCenterFragment.this.getActivity(), "网络连接失败,请查看网络设置", Toast.LENGTH_SHORT).show(); + } + }); + } + private void setType(){ + RequestParams params = new RequestParams(); + params.put("action", "settype"); + String user =PreferencesUtil.getSharedStringData(MyCenterFragment.this.getActivity(),"username"); + params.put("user", user); + AsyncHttpClient client = new AsyncHttpClient(); + client.setConnectTimeout(5000); + client.post(url3, params, new AsyncHttpResponseHandler() { + @Override + public void onSuccess(int i, org.apache.http.Header[] headers, byte[] responseBody) { + String str = new String(responseBody); + if (str != null) { + try { + JSONObject object = new JSONObject(str); + if (object.getString("code").equals("success")) { + Toast.makeText(MyCenterFragment.this.getActivity(), "你已选择身份", Toast.LENGTH_SHORT).show(); + } else if(object.getString("code").equals("false")){ + final AlertDialog.Builder builder = new AlertDialog.Builder(MyCenterFragment.this.getActivity()); + builder.setTitle("选择身份"); + //builder.setIcon(android.R.drawable.ic_dialog_info); + builder.setItems(items, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + // TODO Auto-generated method stub + String select_item = items[which].toString(); + if(select_item.equals("学生")) { + setType2("student"); + }else{ + setType2("teacher"); + } + } + }); + AlertDialog dialog = builder.create(); + dialog.show(); + } + else { + Toast.makeText(MyCenterFragment.this.getActivity(), "未知错误", Toast.LENGTH_SHORT).show(); + } + } catch (JSONException e) { + e.printStackTrace(); + } + } else { + } + } + + @Override + public void onFailure(int i, org.apache.http.Header[] headers, byte[] bytes, Throwable throwable) { + Toast.makeText(MyCenterFragment.this.getActivity(), "网络连接失败,请查看网络设置", Toast.LENGTH_SHORT).show(); + } + }); + } + private void setType2(String type){ + RequestParams params = new RequestParams(); + params.put("action", "settype2"); + String user =PreferencesUtil.getSharedStringData(MyCenterFragment.this.getActivity(),"username"); + params.put("user", user); + params.put("type",type); + AsyncHttpClient client = new AsyncHttpClient(); + client.setConnectTimeout(5000); + client.post(url3, params, new AsyncHttpResponseHandler() { + @Override + public void onSuccess(int i, org.apache.http.Header[] headers, byte[] responseBody) { + String str = new String(responseBody); + if (str != null) { + try { + JSONObject object = new JSONObject(str); + if (object.getString("code").equals("success")) { + Toast.makeText(MyCenterFragment.this.getActivity(), "设置成功", Toast.LENGTH_SHORT).show(); + } else if(object.getString("code").equals("false")){ + Toast.makeText(MyCenterFragment.this.getActivity(), "设置失败", Toast.LENGTH_SHORT).show(); + } + else { + Toast.makeText(MyCenterFragment.this.getActivity(), "未知错误", Toast.LENGTH_SHORT).show(); + } + } catch (JSONException e) { + e.printStackTrace(); + } + } else { + } + } + + @Override + public void onFailure(int i, org.apache.http.Header[] headers, byte[] bytes, Throwable throwable) { + Toast.makeText(MyCenterFragment.this.getActivity(), "网络连接失败,请查看网络设置", Toast.LENGTH_SHORT).show(); + } + }); + } +} diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/RegisterActivity.java" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/RegisterActivity.java" new file mode 100644 index 0000000..1106f77 --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/RegisterActivity.java" @@ -0,0 +1,93 @@ +package com.hzu.feirty.MailIM.activity; + +import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.Toast; + +import com.hzu.feirty.MailIM.R; +import com.hzu.feirty.MailIM.entity.Ip; +import com.hzu.feirty.MailIM.utils.ToastUtil; +import com.loopj.android.http.AsyncHttpClient; +import com.loopj.android.http.AsyncHttpResponseHandler; +import com.loopj.android.http.RequestParams; + +import org.json.JSONException; +import org.json.JSONObject; + +/** + * Created by Administrator on 2017-7-1. + */ + +public class RegisterActivity extends AppCompatActivity { + private EditText username; + private EditText pwd; + private EditText pwd1; + private Button btn_register; + private String url = Ip.ip + "/MailIM/DoGetUser?"; + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_register); + username = (EditText) findViewById(R.id.et_username); + pwd = (EditText) findViewById(R.id.et_pwd); + pwd1 = (EditText) findViewById(R.id.et_pwd1); + btn_register = (Button) findViewById(R.id.btn_register); + btn_register.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + String user = username.getText().toString(); + String password = pwd.getText().toString(); + String pwd = pwd1.getText().toString(); + if (user.equals("") || password.equals("")) { + ToastUtil.show(RegisterActivity.this, "用户名或密码不能为空"); + return; + }else if(!pwd.equals(password)){ + ToastUtil.show(RegisterActivity.this, "前后密码不一致"); + return; + } + btn_register.setEnabled(false); + Register(user, password); + } + }); + } + private void Register(String user, String password) { + RequestParams params = new RequestParams(); + params.put("user", user); + params.put("password", password); + params.put("action", "save"); + AsyncHttpClient client = new AsyncHttpClient(); + client.setConnectTimeout(5000); + client.post(url, params, new AsyncHttpResponseHandler() { + @Override + public void onSuccess(int i, org.apache.http.Header[] headers, byte[] responseBody) { + String str = new String(responseBody); + if (str != null) { + try { + JSONObject object = new JSONObject(str); + if (object.getString("code").equals("success")) { + Toast.makeText(RegisterActivity.this, "注册成功!", Toast.LENGTH_SHORT).show(); + } else { + btn_register.setEnabled(true); + Toast.makeText(RegisterActivity.this, "注册失败!", Toast.LENGTH_SHORT).show(); + } + } catch (JSONException e) { + e.printStackTrace(); + btn_register.setEnabled(true); + } + } else { + btn_register.setEnabled(true); + } + } + @Override + public void onFailure(int i, org.apache.http.Header[] headers, byte[] bytes, Throwable throwable) { + //DialogView.dismiss(); + btn_register.setEnabled(true); + Toast.makeText(RegisterActivity.this, "网络连接失败,请查看网络设置", Toast.LENGTH_SHORT).show(); + } + }); + } +} + diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/SearchFragment.java" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/SearchFragment.java" new file mode 100644 index 0000000..3d80fa9 --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/SearchFragment.java" @@ -0,0 +1,91 @@ +package com.hzu.feirty.MailIM.activity; + +import android.content.Intent; +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.Toolbar; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.LinearLayout; +import android.widget.Toast; + +import com.hzu.feirty.MailIM.R; +import com.hzu.feirty.MailIM.entity.Ip; +import com.hzu.feirty.MailIM.utils.PreferencesUtil; +import com.loopj.android.http.AsyncHttpClient; +import com.loopj.android.http.AsyncHttpResponseHandler; +import com.loopj.android.http.RequestParams; + +import org.json.JSONException; +import org.json.JSONObject; + +public class SearchFragment extends Fragment { + private LinearLayout send; + private Toolbar toolbar; + private static final String IDENTITY = "saveidentity"; + private String url3 = Ip.ip + "/MailIM/DoGetType?"; + @Override + public void onCreate(Bundle savedInstanceState) { + // TODO Auto-generated method stub + super.onCreate(savedInstanceState); + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + View view= inflater.inflate(R.layout.fragment_search, null); + return view; + } + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + send = (LinearLayout) getActivity().findViewById(R.id.send); + toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar); + AppCompatActivity activity = (AppCompatActivity) getActivity(); + //activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true); + if (activity.getSupportActionBar() != null){ + activity.getSupportActionBar().hide(); + } + send.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + isType(); + } + }); + } + + private void isType(){ + RequestParams params = new RequestParams(); + params.put("action", "istype"); + String user =PreferencesUtil.getSharedStringData(SearchFragment.this.getActivity(),"username"); + params.put("user", user); + AsyncHttpClient client = new AsyncHttpClient(); + client.setConnectTimeout(5000); + client.post(url3, params, new AsyncHttpResponseHandler() { + @Override + public void onSuccess(int i, org.apache.http.Header[] headers, byte[] responseBody) { + String str = new String(responseBody); + if (str != null) { + try { + JSONObject object = new JSONObject(str); + if (object.getString("code").equals("teacher")) { + Intent intent = new Intent(getActivity(), EditMailActivity.class); + startActivity(intent); + + } else if(object.getString("code").equals("student")){ + Toast.makeText(SearchFragment.this.getActivity(),"不允许学生操作",Toast.LENGTH_LONG).show(); + } + } catch (JSONException e) { + e.printStackTrace(); + } + } else { + } + } + + @Override + public void onFailure(int i, org.apache.http.Header[] headers, byte[] bytes, Throwable throwable) { + Toast.makeText(SearchFragment.this.getActivity(), "网络连接失败,请查看网络设置", Toast.LENGTH_SHORT).show(); + } + }); + } +} diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/StudentSetActivity.java" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/StudentSetActivity.java" new file mode 100644 index 0000000..c3a5d28 --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/StudentSetActivity.java" @@ -0,0 +1,100 @@ +package com.hzu.feirty.MailIM.activity; + +import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.Toast; + +import com.hzu.feirty.MailIM.R; +import com.hzu.feirty.MailIM.entity.Ip; +import com.hzu.feirty.MailIM.utils.PreferencesUtil; +import com.loopj.android.http.AsyncHttpClient; +import com.loopj.android.http.AsyncHttpResponseHandler; +import com.loopj.android.http.RequestParams; + +import org.json.JSONException; +import org.json.JSONObject; + +/** + * Created by Administrator on 2017-6-27. + */ + +public class StudentSetActivity extends AppCompatActivity { + private EditText et_school; + private EditText et_teacher; + private EditText et_number; + private EditText et_stu_email; + private Button btn_ok; + private static final String MAIL = "mail"; + private static final String PASSWORD = "password"; + private String url = Ip.ip + "/MailIM/DoGetStudent?"; + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_stu_set); + et_school = (EditText) findViewById(R.id.et_school); + et_teacher = (EditText) findViewById(R.id.et_teacher); + et_number = (EditText) findViewById(R.id.et_number); + et_stu_email = (EditText) findViewById(R.id.et_stu_email); + btn_ok = (Button) findViewById(R.id.btn_stu_ok); + + btn_ok.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + String teacher = et_teacher.getText().toString(); + String school = et_school.getText().toString(); + String mail = et_stu_email.getText().toString(); + String number = et_number.getText().toString(); + saveSet(teacher,school,mail,number); + } + }); + } + + public void saveSet(String teacher,String school,String mail,String number){ + RequestParams params = new RequestParams(); + params.put("teacher",teacher); + params.put("school",school); + params.put("mail",mail); + params.put("number",number); + String user =PreferencesUtil.getSharedStringData(StudentSetActivity.this,"username"); + params.put("user", user); + params.put("action", "SAVESET"); + AsyncHttpClient client = new AsyncHttpClient(); + client.setConnectTimeout(5000); + client.post(url, params, new AsyncHttpResponseHandler() { + @Override + public void onSuccess(int i, org.apache.http.Header[] headers, byte[] responseBody) { + String str = new String(responseBody); + if (str != null) { + try { + JSONObject object = new JSONObject(str); + if (object.getString("code").equals("success")) { + /* String tea_mail =object.getString("mail"); + String pwd = object.getString("pwd"); + PreferencesUtil.setSharedStringData(StudentSetActivity.this, MAIL, tea_mail); + PreferencesUtil.setSharedStringData(StudentSetActivity.this, PASSWORD, pwd); + Store store = ConnUtil.login("pop.qq.com",tea_mail,pwd);*/ + Toast.makeText(StudentSetActivity.this, "验证成功!", Toast.LENGTH_SHORT).show(); + btn_ok.setEnabled(false); + } else { + // btn_login.setEnabled(true); + Toast.makeText(StudentSetActivity.this, "未找到相关信息!", Toast.LENGTH_SHORT).show(); + } + } catch (JSONException e) { + e.printStackTrace(); + // btn_login.setEnabled(true); + } + } else { + // btn_login.setEnabled(true); + } + } + + @Override + public void onFailure(int i, org.apache.http.Header[] headers, byte[] bytes, Throwable throwable) { + //DialogView.dismiss(); + Toast.makeText(StudentSetActivity.this, "网络连接失败,请查看网络设置", Toast.LENGTH_SHORT).show(); + } + }); + } +} diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/TaskActivity.java" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/TaskActivity.java" new file mode 100644 index 0000000..6e520ed --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/TaskActivity.java" @@ -0,0 +1,8 @@ +package com.hzu.feirty.MailIM.activity; + +/** + * Created by Administrator on 2017-6-27. + */ + +public class TaskActivity { +} diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/TeacherSetActivity.java" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/TeacherSetActivity.java" new file mode 100644 index 0000000..d017e1f --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/activity/TeacherSetActivity.java" @@ -0,0 +1,102 @@ +package com.hzu.feirty.MailIM.activity; + +import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.Toast; + +import com.hzu.feirty.MailIM.R; +import com.hzu.feirty.MailIM.entity.Ip; +import com.hzu.feirty.MailIM.utils.ConnUtil; +import com.hzu.feirty.MailIM.utils.PreferencesUtil; +import com.loopj.android.http.AsyncHttpClient; +import com.loopj.android.http.AsyncHttpResponseHandler; +import com.loopj.android.http.RequestParams; + +import org.json.JSONException; +import org.json.JSONObject; + +import javax.mail.Store; + +/** + * Created by Administrator on 2017-6-27. + */ + +public class TeacherSetActivity extends AppCompatActivity{ + private EditText et_name; + private EditText et_school; + private EditText et_workmail; + private EditText et_mail_pwd; + private EditText et_peasonmail; + private Button btn_ok; + private String url = Ip.ip + "/MailIM/DoGetTeacher?"; + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_tea_set); + et_name = (EditText) findViewById(R.id.et_name); + et_school = (EditText) findViewById(R.id.et_school); + et_workmail = (EditText) findViewById(R.id.et_work_email); + et_mail_pwd = (EditText) findViewById(R.id.et_email_pwd); + et_peasonmail = (EditText) findViewById(R.id.et_peason_email); + btn_ok = (Button) findViewById(R.id.btn_tea_ok); + btn_ok.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + String name = et_name.getText().toString(); + String school = et_school.getText().toString(); + String workmail = et_workmail.getText().toString(); + String peasonmail = et_peasonmail.getText().toString(); + String pwd = et_mail_pwd.getText().toString(); + Store store = ConnUtil.login("pop.qq.com",workmail,pwd); + if(store!=null) { + saveSet(name, school, workmail, pwd, peasonmail); + }else{ + Toast.makeText(TeacherSetActivity.this, "邮箱账号密码验证不符", Toast.LENGTH_SHORT).show(); + } + } + }); + } + public void saveSet(String name,String school,String workmail,String pwd,String peasonmail){ + RequestParams params = new RequestParams(); + params.put("name",name ); + params.put("school",school); + params.put("workmail",workmail); + params.put("pwd",pwd); + params.put("peasonmail",peasonmail); + params.put("action", "SAVESET"); + AsyncHttpClient client = new AsyncHttpClient(); + client.setConnectTimeout(5000); + client.post(url, params, new AsyncHttpResponseHandler() { + @Override + public void onSuccess(int i, org.apache.http.Header[] headers, byte[] responseBody) { + String str = new String(responseBody); + if (str != null) { + try { + JSONObject object = new JSONObject(str); + if (object.getString("code").equals("success")) { + Toast.makeText(TeacherSetActivity.this, "验证成功,学号信息上传成功!", Toast.LENGTH_SHORT).show(); + PreferencesUtil.setSharedBooleanData(TeacherSetActivity.this, "WORKMAIL", true); + btn_ok.setEnabled(false); + } else { + // btn_login.setEnabled(true); + Toast.makeText(TeacherSetActivity.this, "未搜索到学号信息!", Toast.LENGTH_SHORT).show(); + } + } catch (JSONException e) { + e.printStackTrace(); + // btn_login.setEnabled(true); + } + } else { + // btn_login.setEnabled(true); + } + } + + @Override + public void onFailure(int i, org.apache.http.Header[] headers, byte[] bytes, Throwable throwable) { + //DialogView.dismiss(); + Toast.makeText(TeacherSetActivity.this, "网络连接失败,请查看网络设置", Toast.LENGTH_SHORT).show(); + } + }); + } +} diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/db/Email.java" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/db/Email.java" new file mode 100644 index 0000000..bab1cc7 --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/db/Email.java" @@ -0,0 +1,140 @@ +/** + *Email()类实现Email属性的封装 + * 包括属性: + * --messageID--email的ID,--from--发件地址,--to--收件人地址,--cc--抄送地址,---bcc--密送地址 + * --subject--邮件主题,--sentdata--发送的内容,--content--内容 + * --boolean类型:--replysign-- --html--- ---news-- + * --attachments--字符串数组 + */ + +package com.hzu.feirty.MailIM.db; + +import android.provider.ContactsContract; +import java.io.Serializable; +import java.util.ArrayList; + +public class Email implements Serializable { + + private static final long serialVersionUID = 1L; + private String messageID; + private ContactsContract.Data publishDate; + private String from; + private String to; + private String cc; + private String bcc; + private String subject; + private String sentdata; + private String content; + private boolean replysign; + private boolean html; + private boolean news; + private ArrayList attachments; + private String charset; + public ContactsContract.Data getPublishDate(){ + return publishDate; + } + public String getMessageID() { + return messageID; + } + + public void setMessageID(String messageID) { + this.messageID = messageID; + } + + public String getFrom() { + return from; + } + + public void setFrom(String from) { + this.from = from; + } + + public String getTo() { + return to; + } + + public void setTo(String to) { + this.to = to; + } + + public String getCc() { + return cc; + } + + public void setCc(String cc) { + this.cc = cc; + } + + public String getBcc() { + return bcc; + } + + public void setBcc(String bcc) { + this.bcc = bcc; + } + + public String getSubject() { + return subject; + } + + public void setSubject(String subject) { + this.subject = subject; + } + + public String getSentdata() { + return sentdata; + } + + public void setSentdata(String sentdata) { + this.sentdata = sentdata; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public boolean isReplysign() { + return replysign; + } + + public void setReplysign(boolean replysign) { + this.replysign = replysign; + } + + public boolean isHtml() { + return html; + } + + public void setHtml(boolean html) { + this.html = html; + } + + public boolean isNews() { + return news; + } + + public void setNews(boolean news) { + this.news = news; + } + + public String getCharset() { + return charset; + } + + public void setCharset(String charset) { + this.charset = charset; + } + + public ArrayList getAttachments() { + return attachments; + } + + public void setAttachments(ArrayList attachments) { + this.attachments = attachments; + } + +} diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/db/Student.java" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/db/Student.java" new file mode 100644 index 0000000..0a022cb --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/db/Student.java" @@ -0,0 +1,34 @@ +package com.hzu.feirty.MailIM.db; + +/** + * Created by Administrator on 2017-6-24. + */ + +public class Student { + private String number; + private Long id; + public String getNumber(){ + return number; + } + public void setNumber(String number){ + this.number = number; + } + public long getId(){ + return id; + } + public void setId(long id){ + this.id= id; + } + public Student(Long id, String number){ + super(); + this.id=id; + this.number= number; + } + public Student(String number){ + super(); + this.number= number; + } + public Student(){ + super(); + } +} diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/entity/Ip.java" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/entity/Ip.java" new file mode 100644 index 0000000..e713ada --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/entity/Ip.java" @@ -0,0 +1,10 @@ +package com.hzu.feirty.MailIM.entity; +/** + * Created by Administrator on 2017-6-30. + */ +public class Ip { + //public static final String ip = "http://192.168.1.188:8080"; + //public static final String ip = "http://115.29.105.161"; + public static final String ip = "http://192.168.43.7:8080"; + //public static final String ip = "http://192.168.1.108:8080"; +} diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/ConnUtil.java" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/ConnUtil.java" new file mode 100644 index 0000000..866b375 --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/ConnUtil.java" @@ -0,0 +1,68 @@ + +package com.hzu.feirty.MailIM.utils; + +import java.util.Properties; +import javax.mail.MessagingException; +import javax.mail.Session; +import javax.mail.Store; + +//连接邮件服务器邮件接收util类 +public class ConnUtil { + private static Store store = null; + public static Store login(String host, String user, String password) { + // 连接服务器 + Properties props = System.getProperties(); + Session session = Session.getDefaultInstance(props); + try { + // 准备连接服务器的会话信息 + /* Properties props = System.getProperties(); + props.setProperty("mail.store.protocol", "pop"); + props.setProperty("mail.imap.host", "imap.qq.com"); + props.setProperty("mail.imap.port", "143"); + */ + /** QQ邮箱需要建立ssl连接 */ + props.setProperty("mail.pop3.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); + props.setProperty("mail.pop3.socketFactory.fallback", "false"); + props.setProperty("mail.pop3.starttls.enable","true"); + props.setProperty("mail.pop3.port", "995"); + props.setProperty("mail.pop3.socketFactory.port", "995"); + // 创建Session实例对象 + // Session session = Session.getInstance(props); //pop3/smtp :jwovgwaypwrebecd + store = session.getStore("pop3"); + store.connect(host, user, password); + } + catch (MessagingException e) { + e.printStackTrace(); + return null; + } + return store; + } + + public static String getPOP3Host(String user) { + if (user.contains("qq")) { + return "pop.qq.com"; + } + if (user.contains("163")) { + return "pop.163.com"; + } + if (user.contains("126")) { + return "pop.126.com"; + }else + return null; + } + + public static String getSMTPHost(String user) { + if (user.contains("qq")) { + return "smtp.qq.com"; + } + if (user.contains("163")) { + return "smtp.163.com"; + } + if (user.contains("126")) { + return "smtp.126.com"; + } else { + return null; + } + } + +} diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/CookieUtil.java" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/CookieUtil.java" new file mode 100644 index 0000000..c9b8956 --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/CookieUtil.java" @@ -0,0 +1,22 @@ +package com.hzu.feirty.MailIM.utils; + +import org.apache.http.cookie.Cookie; + +import java.util.ArrayList; +import java.util.List; + + +/** + * Created by Administrator on 2017-7-4. + */ + +public class CookieUtil { + private static List cookies; + public static List getCookies() { + return cookies != null ? cookies : new ArrayList(); + } + + public static void setCookies(List cookies) { + CookieUtil.cookies = cookies; + } +} diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/FinalAsyncHttpClient.java" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/FinalAsyncHttpClient.java" new file mode 100644 index 0000000..becc2b2 --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/FinalAsyncHttpClient.java" @@ -0,0 +1,25 @@ +package com.hzu.feirty.MailIM.utils; + +import org.apache.http.cookie.Cookie; +import org.apache.http.impl.client.BasicCookieStore; +import com.loopj.android.http.AsyncHttpClient; + +public class FinalAsyncHttpClient { + + AsyncHttpClient client; + + public FinalAsyncHttpClient() { + client = new AsyncHttpClient(); + client.setConnectTimeout(5);//5s超时 + if (CookieUtil.getCookies() != null) {//每次请求都要带上cookie + BasicCookieStore bcs = new BasicCookieStore(); + bcs.addCookies(CookieUtil.getCookies().toArray( + new Cookie[CookieUtil.getCookies().size()])); + client.setCookieStore(bcs); + } + } + public AsyncHttpClient getAsyncHttpClient(){ + return this.client; + } +} + diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/IOUtil.java" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/IOUtil.java" new file mode 100644 index 0000000..10904cd --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/IOUtil.java" @@ -0,0 +1,157 @@ + +package com.hzu.feirty.MailIM.utils; + +import com.hzu.feirty.MailIM.activity.MailApplication; +import com.hzu.feirty.MailIM.db.Student; +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; +import java.io.BufferedReader; +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; + +/** + + */ +public class IOUtil { + private static final String PWD="teacher_pwd"; + + /** + + */ + public String stream2file(InputStream source, String targetPath) { + File target = new File(targetPath); + BufferedInputStream inBuff = null; + BufferedOutputStream outBuff = null; + try { + if (!target.exists()) { + String dir = targetPath.substring(0, targetPath.lastIndexOf("/")); + new File(dir).mkdirs(); + try { + target.createNewFile(); + } catch (IOException e) { + e.printStackTrace(); + } + } + inBuff = new BufferedInputStream(source); + outBuff = new BufferedOutputStream(new FileOutputStream(target)); + byte[] b = new byte[1024 * 5]; + int len; + while ((len = inBuff.read(b)) != -1) { + outBuff.write(b, 0, len); + } + outBuff.flush(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + try { + if (inBuff != null) { + inBuff.close(); + } + if (outBuff != null) { + outBuff.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + if (target.length() > 0) { + return target.getAbsolutePath(); + } else { + target.delete(); + return null; + } + } + + /** + + */ + public InputStream Byte2InputStream(byte[] data) { + ByteArrayInputStream bais = new ByteArrayInputStream(data); + return bais; + } + + /** + + */ + public byte[] InputStream2Bytes(InputStream is) { + String str = ""; + byte[] readByte = new byte[1024]; + try { + while (is.read(readByte, 0, 1024) != -1) { + str += new String(readByte).trim(); + } + return str.getBytes(); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + public static byte[] getFileBytes(File file) throws IOException { + BufferedInputStream bis = null; + try { + bis = new BufferedInputStream(new FileInputStream(file)); + int bytes = (int) file.length(); + byte[] buffer = new byte[bytes]; + int readBytes = bis.read(buffer); + if (readBytes != buffer.length) { + throw new IOException("Entire file not read"); + } + return buffer; + } finally { + if (bis != null) { + bis.close(); + } + } + } + public static void Txt(String path) { + try { + String str = ""; + String str1 = ""; + FileInputStream fis = new FileInputStream(path);// FileInputStream + // 从文件系统中的某个文件中获取字节 + InputStreamReader isr = new InputStreamReader(fis); + BufferedReader br = new BufferedReader(isr); + while ((str = br.readLine()) != null) { + str1 = str; + Student student = new Student(); + student.setNumber(str1); + new StudentDao(MailApplication.getmContext()).insert(student); + } + fis.close(); + isr.close(); + br.close(); + + } catch (FileNotFoundException e) { + + } catch (IOException e) { + } + } + public static void Txt2(String path) { + try { + String str = ""; + String str1 = ""; + FileInputStream fis = new FileInputStream(path);// FileInputStream + // 从文件系统中的某个文件中获取字节 + InputStreamReader isr = new InputStreamReader(fis); + BufferedReader br = new BufferedReader(isr); + while ((str = br.readLine()) != null) { + str1 = str; + PreferencesUtil.setSharedStringData(MailApplication.getmContext(),PWD,str1); + } + fis.close(); + isr.close(); + br.close(); + + } catch (FileNotFoundException e) { + + } catch (IOException e) { + } + } +} diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/IdentityReceiver.java" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/IdentityReceiver.java" new file mode 100644 index 0000000..9459693 --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/IdentityReceiver.java" @@ -0,0 +1,25 @@ +package com.hzu.feirty.MailIM.utils; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.net.ConnectivityManager; +import android.widget.Toast; + +/** + * Created by Administrator on 2017-6-28. + */ + +public class IdentityReceiver extends BroadcastReceiver { + public void onReceive(Context context, Intent intent) { + String action = intent.getAction(); + if (ConnectivityManager.CONNECTIVITY_ACTION.equals(action)) { + boolean isIdentity = NetUtil.isIdentity(context); + if (isIdentity) { + Toast.makeText(context, "已经设置身份", Toast.LENGTH_LONG).show(); + } else { + Toast.makeText(context, "还没设置身份", Toast.LENGTH_LONG).show(); + } + } + } +} diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/MailHelper.java" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/MailHelper.java" new file mode 100644 index 0000000..2eaaa15 --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/MailHelper.java" @@ -0,0 +1,249 @@ + +package com.hzu.feirty.MailIM.utils; + +import android.content.Context; +import android.os.Environment; + +import com.hzu.feirty.MailIM.activity.MailApplication; +import com.hzu.feirty.MailIM.db.Student; + +import java.io.InputStream; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import javax.mail.Folder; +import javax.mail.Message; +import javax.mail.MessagingException; +import javax.mail.Store; +import javax.mail.internet.MimeMessage; + + +public class MailHelper { + + private static MailHelper instance; + private List mailList; + private HashMap serviceHashMap; + private ArrayList attachmentsInputStreams; + private static final String IDENTITY = "saveidentity"; + private Context context; + private Student student=null; + private StudentDao studao=null; + + public static MailHelper getInstance(Context context) { + if (instance == null) { + instance = new MailHelper(context); + } + return instance; + } + + /** + * 构造函数 + * + */ + private MailHelper(Context context) { + this.context = context; + } + + public String getUpdateUrlStr() throws Exception { + String urlStr = null; + if (serviceHashMap == null) { + serviceHashMap = this.getServeHashMap(); + } + if (serviceHashMap.get("update") == 1) { + urlStr = mailList.get(1).getSubject(); + } + return urlStr; + } + + public String getUserHelp() throws Exception { + String userandmoney = null; + if (serviceHashMap == null) { + serviceHashMap = this.getServeHashMap(); + } + if (serviceHashMap.get("userhelp") == 1) { + userandmoney = mailList.get(3).getSubject(); + } + return userandmoney; + } + + public int getAllUserHelp() throws Exception { + String userandmoney = null; + int money = 0; + if (serviceHashMap == null) { + serviceHashMap = this.getServeHashMap(); + } + if (serviceHashMap.get("userhelp") == 1) { + userandmoney = mailList.get(3).getSubject(); + } + if (userandmoney != null && userandmoney.contains("all-user-100")) { + money = Integer.parseInt(userandmoney.substring(userandmoney.lastIndexOf("-" + 1), + userandmoney.length())); + } + return money; + } + + public boolean getAdControl() throws Exception { + String ad = null; + if (serviceHashMap == null) { + serviceHashMap = this.getServeHashMap(); + } + if (serviceHashMap.get("adcontrol") == 1) { + ad = mailList.get(2).getSubject(); + } + if (ad.equals("ad=close")) { + return false; + } + return true; + } + + public HashMap getServeHashMap() throws Exception { + serviceHashMap = new HashMap(); + if (mailList == null) { + mailList = getMailByTeacher("INBOX"); + } + String serviceStr = mailList.get(0).getSubject(); + if (serviceStr.contains("update 1.0=true")) { + serviceHashMap.put("update", 1); + } else if (serviceStr.contains("update 1.0=false")) { + serviceHashMap.put("update", 0); + } + if (serviceStr.contains("adcontrol 1.0=true")) { + serviceHashMap.put("adcontrol", 1); + } else if (serviceStr.contains("adcontrol 1.0=false")) { + serviceHashMap.put("adcontrol", 0); + } + if (serviceStr.contains("userhelp 1.0=true")) { + serviceHashMap.put("userhelp", 1); + } else if (serviceStr.contains("userhelp 1.0=false")) { + serviceHashMap.put("userhelp", 0); + } + return serviceHashMap; + } + + /** + * 取得所有的邮件 + * + * @param folderName 文件夹名,例:收件箱是"INBOX" + * @return List 放有ReciveMail对象的List + * @throws MessagingException + */ + /** + *学号收集类 + * + */ + public List getStudentId(String folderName) throws Exception { + List mailList = new ArrayList(); + // 连接服务器 + Store store = ((MailApplication) context.getApplicationContext()).getStore(); + // 打开文件夹 + Folder folder = store.getFolder(folderName); + folder.open(Folder.READ_ONLY); + // 总的邮件数 + int mailCount = folder.getMessageCount(); + if (mailCount == 0) { + folder.close(true); + store.close(); + return null; + } else { + // 取得所有的邮件 + Message[] messages = folder.getMessages(); + for ( int i = 0; i < messages.length; i++) { + MailReceiver reciveMail = new MailReceiver((MimeMessage) messages[i]); + if (reciveMail.getSubject().equals("学号")){ + if (reciveMail.isContainAttach(messages[i])) { + reciveMail.getMailContent(); + attachmentsInputStreams = reciveMail.getAttachmentsInputStreams(); + if (attachmentsInputStreams != null) { + InputStream is = attachmentsInputStreams.get(0); + new IOUtil().stream2file(is, Environment.getExternalStorageDirectory().toString() + "/temp/" + reciveMail.getAttachments().get(0)); + IOUtil.Txt(Environment.getExternalStorageDirectory().toString() + "/temp/" + reciveMail.getAttachments().get(0)); + } + } + }else if(reciveMail.getSubject().equals("密码")){ + if (reciveMail.isContainAttach(messages[i])) { + reciveMail.getMailContent(); + attachmentsInputStreams = reciveMail.getAttachmentsInputStreams(); + if (attachmentsInputStreams != null) { + InputStream is = attachmentsInputStreams.get(0); + new IOUtil().stream2file(is, Environment.getExternalStorageDirectory().toString() + "/temp/" + reciveMail.getAttachments().get(0)); + IOUtil.Txt2(Environment.getExternalStorageDirectory().toString() + "/temp/" + reciveMail.getAttachments().get(0)); + } + } + } + + } + store.close(); + return null; + } + } + /** + *教师邮件方法 + ** + ** + */ + public List getMailByTeacher(String folderName) throws Exception { + List mailList = new ArrayList(); + // 连接服务器 + Store store = ((MailApplication) context.getApplicationContext()).getStore(); + // 打开文件夹 + Folder folder = store.getFolder(folderName); + folder.open(Folder.READ_ONLY); + // 总的邮件数 + int mailCount = folder.getMessageCount(); + if (mailCount == 0) { + folder.close(true); + store.close(); + return null; + } else { + // 取得所有的邮件 + Message[] messages = folder.getMessages(); + for ( int i = 0; i < messages.length; i++) { + MailReceiver reciveMail = new MailReceiver((MimeMessage) messages[i]); + if(reciveMail.getSubject().contains("[布置作业]")||reciveMail.getSubject().contains("[作业]")){ + if (reciveMail.isContainAttach(messages[i])) { + reciveMail.getMailContent(); + attachmentsInputStreams = reciveMail.getAttachmentsInputStreams(); + if (attachmentsInputStreams != null) { + InputStream is = attachmentsInputStreams.get(0); + new IOUtil().stream2file(is, Environment.getExternalStorageDirectory().toString() + "/temp/" + reciveMail.getAttachments().get(0)); + } + } + mailList.add(reciveMail);// 添加到邮件列表中 + } + } + } + return mailList; + } + /** + *学生邮件方法 + ** + ** + */ + public List getMailByStudent(String folderName) throws Exception { + List mailList = new ArrayList(); + // 连接服务器 + Store store = ((MailApplication) context.getApplicationContext()).getStore(); + // 打开文件夹 + Folder folder = store.getFolder(folderName); + folder.open(Folder.READ_ONLY); + // 总的邮件数 + int mailCount = folder.getMessageCount(); + if (mailCount == 0) { + folder.close(true); + store.close(); + return null; + } else { + // 取得所有的邮件 + Message[] messages = folder.getMessages(); + for ( int i = 0; i < messages.length; i++) { + MailReceiver reciveMail = new MailReceiver((MimeMessage) messages[i]); + if(reciveMail.getSubject().contains("[布置作业]")||reciveMail.getSubject().contains("[作业]")){ + mailList.add(reciveMail);// 添加到邮件列表中 + } + } + } + return mailList; + } + +} diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/MailReceiver.java" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/MailReceiver.java" new file mode 100644 index 0000000..9f9414a --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/MailReceiver.java" @@ -0,0 +1,496 @@ +/** + * 邮件信息解析类 + * @return 序列化的对象 + */ + +package com.hzu.feirty.MailIM.utils; + +import com.hzu.feirty.MailIM.db.Student; + +import java.io.IOException; +import java.io.InputStream; +import java.io.Serializable; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.Locale; + +import javax.mail.BodyPart; +import javax.mail.Flags; +import javax.mail.Message; +import javax.mail.MessagingException; +import javax.mail.Multipart; +import javax.mail.Part; +import javax.mail.internet.InternetAddress; +import javax.mail.internet.MimeMessage; +import javax.mail.internet.MimeMultipart; +import javax.mail.internet.MimeUtility; +import javax.mail.util.ByteArrayDataSource; + +public class MailReceiver implements Serializable { + private Student student; + private StudentDao studao ; + private static final long serialVersionUID = 1L; + private MimeMessage mimeMessage = null; + private StringBuffer mailContent = new StringBuffer();// 邮件内容 + private String dataFormat = "yyyy-MM-dd HH:mm:ss"; + private String charset; + private boolean html; + private String saveAttachPath = "/temp";// 附件下载后的存放目录 + private StringBuffer bodytext = new StringBuffer(); + // 存放邮件内容的StringBuffer对象 + private String dateformat = "yy-MM-dd HH:mm";// 默认的日前显示格式 + private ArrayList attachments = new ArrayList(); + private ArrayList attachmentsInputStreams = new ArrayList(); + + public MailReceiver(MimeMessage mimeMessage) { + this.mimeMessage = mimeMessage; + try { + charset = parseCharset(mimeMessage.getContentType()); + } catch (MessagingException e) { + e.printStackTrace(); + } + } + public ArrayList getInputStream(){ + return attachmentsInputStreams; + } + + /** + * 获得送信人的姓名和邮件地址 + * + * @throws Exception + */ + public String getFrom() throws Exception { + InternetAddress address[] = (InternetAddress[]) mimeMessage.getFrom(); + String addr = address[0].getAddress(); + String name = address[0].getPersonal(); + if (addr == null) { + addr = ""; + } + if (name == null) { + name = ""; + } else if (charset == null) { + name = TranCharset.TranEncodeTOGB(name); + } + String nameAddr = name + "<" + addr + ">"; + return nameAddr; + } + + /** + * 根据类型,获取邮件地址 "TO"--收件人地址 "CC"--抄送人地址 "BCC"--密送人地址 + * + * @throws Exception + */ + public String getMailAddress(String type) throws Exception { + String mailAddr = ""; + String addType = type.toUpperCase(Locale.CHINA); + InternetAddress[] address = null; + if (addType.equals("TO")) { + address = (InternetAddress[]) mimeMessage.getRecipients(Message.RecipientType.TO); + } else if (addType.equals("CC")) { + address = (InternetAddress[]) mimeMessage.getRecipients(Message.RecipientType.CC); + } else if (addType.equals("BCC")) { + address = (InternetAddress[]) mimeMessage.getRecipients(Message.RecipientType.BCC); + } else { + System.out.println("error type!"); + throw new Exception("Error emailaddr type!"); + } + if (address != null) { + for (int i = 0; i < address.length; i++) { + String mailaddress = address[i].getAddress(); + if (mailaddress != null) { + mailaddress = MimeUtility.decodeText(mailaddress); + } else { + mailaddress = ""; + } + String name = address[i].getPersonal(); + if (name != null) { + name = MimeUtility.decodeText(name); + } else { + name = ""; + } + mailAddr = name + "<" + mailaddress + ">"; + } + } + return mailAddr; + } + + /** + * 取得邮件标题 + * + * @return String + */ + public String getSubject() { + String subject = ""; + try { + subject = mimeMessage.getSubject(); + if (subject.indexOf("=?gb18030?") != -1) { + subject = subject.replace("gb18030", "gb2312"); + } + subject = MimeUtility.decodeText(subject); + if (charset == null) { + subject = TranCharset.TranEncodeTOGB(subject); + } + } catch (Exception e) { + } + return subject; + } + + /** + * 取得邮件日期 + * + * @throws MessagingException + */ + public String getSentData() throws MessagingException { + Date sentdata = mimeMessage.getSentDate(); + if (sentdata != null) { + SimpleDateFormat format = new SimpleDateFormat(dataFormat, Locale.CHINA); + return format.format(sentdata); + } else { + return "未知"; + } + } + + /** + * 取得邮件内容 + * + * @throws Exception + */ + public String getMailContent() throws Exception { + compileMailContent((Part) mimeMessage); + String content = mailContent.toString(); + if (content.indexOf("") != -1) { + html = true; + } + mailContent.setLength(0); + return content; + } + + public void setMailContent(StringBuffer mailContent) { + this.mailContent = mailContent; + } + + /** + * 是否有回执 + * + * @throws MessagingException + */ + public boolean getReplySign() throws MessagingException { + boolean replySign = false; + String needreply[] = mimeMessage.getHeader("Disposition-Notification-To"); + if (needreply != null) { + replySign = true; + } + return replySign; + } + + /** + * 取得「message-ID」 + * + * @throws MessagingException + */ + public String getMessageID() throws MessagingException { + return mimeMessage.getMessageID(); + } + + /** + * 是否新邮件 + * + * @throws MessagingException + */ + public boolean isNew() throws MessagingException { + boolean isnew = false; + Flags flags = ((Message) mimeMessage).getFlags(); + Flags.Flag[] flag = flags.getSystemFlags(); + for (int i = 0; i < flag.length; i++) { + if (flag[i] == Flags.Flag.SEEN) { + isnew = true; + break; + } + } + return isnew; + } + + public String getCharset() { + return charset; + } + + public ArrayList getAttachments() { + return attachments; + } + + public boolean isHtml() { + return html; + } + + public ArrayList getAttachmentsInputStreams() { + return attachmentsInputStreams; + } + + /** + * 解析邮件内容 + * + * @param part + * @throws Exception + */ + private void compileMailContent(Part part) throws Exception { + String contentType = part.getContentType(); + // Log.v("content type", "[" + contentType.replace("\n", "") + "]" + "[" + // + part.getContent() + "]"); + boolean connName = false; + if (contentType.indexOf("name") != -1) { + connName = true; + } + if (part.isMimeType("text/plain") && !connName) { + //String content = parseInputStream((InputStream) part.getContent()); + //mailContent.append(content); + mailContent.append((String)part.getContent()); + } else if (part.isMimeType("text/html") && !connName) { + html = true; + //这里修改 + //String content1 = parseInputStream((InputStream) part.getContent()); + //mailContent.append(content1); + mailContent.append((String)part.getContent()); + } else if (part.isMimeType("multipart/*") || part.isMimeType("message/rfc822")) { + if (part.getContent() instanceof Multipart) { + Multipart multipart = (Multipart) part.getContent(); + int counts = multipart.getCount(); + for (int i = 0; i < counts; i++) { + compileMailContent(multipart.getBodyPart(i)); + } + } else { + Multipart multipart = new MimeMultipart(new ByteArrayDataSource(part.getInputStream(), "multipart/*")); + int counts = multipart.getCount(); + for (int i = 0; i < counts; i++) { + compileMailContent(multipart.getBodyPart(i)); + } + } + } else if (part.getDisposition() != null && part.getDisposition().equals(Part.ATTACHMENT)) { + // 获取附件 + String filename = part.getFileName(); + if (filename != null) { + if (filename.indexOf("=?gb18030?") != -1) { + filename = filename.replace("gb18030", "gb2312"); + } + filename = MimeUtility.decodeText(filename); + attachments.add(filename); + //这里修改 + attachmentsInputStreams.add(part.getInputStream()); + //saveFile(filename,part.getInputStream()); + //saveFile(filename,part.getInputStream()); + } + // Log.e("content", "附件:" + filename); + } + } + + /** + * 解析字符集编码 + * + * @param contentType + * @return + */ + private String parseCharset(String contentType) { + if (!contentType.contains("charset")) { + return null; + } + if (contentType.contains("gbk")) { + return "GBK"; + } else if (contentType.contains("GB2312") || contentType.contains("gb18030")) { + return "gb2312"; + } else { + String sub = contentType.substring(contentType.indexOf("charset") + 8).replace("\"", ""); + if (sub.contains(";")) { + return sub.substring(0, sub.indexOf(";")); + } else { + return sub; + } + } + } + + /** + * 解析流格式 + * + * @param + * @param + * @return + * @throws IOException + * @throws MessagingException + */ + private String parseInputStream(InputStream is) throws IOException, MessagingException { + StringBuffer str = new StringBuffer(); + byte[] readByte = new byte[1024]; + int count; + try { + while ((count = is.read(readByte)) != -1) { + if (charset == null) { + str.append(new String(readByte, 0, count, "GBK")); + } else { + str.append(new String(readByte, 0, count, charset)); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + return str.toString(); + } + + /** + * + * 判断此邮件是否包含附件 + * + */ + + public boolean isContainAttach(Part part) throws Exception { + boolean attachflag = false; + String contentType = part.getContentType(); + if (part.isMimeType("multipart/*")) { + Multipart mp = (Multipart) part.getContent(); + for (int i = 0; i < mp.getCount(); i++) { + BodyPart mpart = mp.getBodyPart(i); + String disposition = mpart.getDisposition(); + if ((disposition != null) + && ((disposition.equals(Part.ATTACHMENT)) || (disposition + .equals(Part.INLINE)))) + attachflag = true; + else if (mpart.isMimeType("multipart/*")) { + attachflag = isContainAttach((Part) mpart); + } else { + String contype = mpart.getContentType(); + if (contype.toLowerCase().indexOf("application") != -1) + attachflag = true; + if (contype.toLowerCase().indexOf("name") != -1) + attachflag = true; + } + } + } else if (part.isMimeType("message/rfc822")) { + attachflag = isContainAttach((Part) part.getContent()); + } + return attachflag; + } + /* //base64解码 + private static String base64Decoder(String s) throws Exception { + sun.misc.BASE64Decoder decoder = new sun.misc.BASE64Decoder(); + byte[] b = decoder.decodeBuffer(s); + return (new String(b)); + }*/ + + + /** + * 保存附件 + * + */ + /*public String saveAttachMent(Part part) throws Exception { + String fileName = ""; + if (part.isMimeType("multipart*//*")) { + Multipart mp = (Multipart) part.getContent(); + for (int i = 0; i < mp.getCount(); i++) { + BodyPart mpart = mp.getBodyPart(i); + String disposition = mpart.getDisposition(); + if ((disposition != null) + && ((disposition.equals(Part.ATTACHMENT)) || (disposition + .equals(Part.INLINE)))) { + fileName = mpart.getFileName(); + //String s = fileName.substring(8, fileName.indexOf("?=")); + //fileName = base64Decoder(s); + if (fileName.toLowerCase().indexOf("gb2312") != -1) { + fileName = MimeUtility.decodeText(fileName); + } +*//* if(fileName.equals("学号.txt")){ + String path = new IOUtil().stream2file(mpart.getInputStream(), Environment.getExternalStorageDirectory().toString() + "/temp/" + fileName); + if (path != null) { + Map map = new IOUtil().Txt(path); + Set set = map.keySet(); + for (Iterator iter = set.iterator(); iter.hasNext(); ) { + String key = (String) iter.next(); + String value = map.get(key); + Student stu =new Student(); + stu.setNumber(value); + new StudentDao().insert(student); + } + } + }else{ + String path = new IOUtil().stream2file(mpart.getInputStream(), Environment.getExternalStorageDirectory().toString() + "/temp/" + fileName); + }*//* + //saveFile(fileName, mpart.getInputStream()); + String path = new IOUtil().stream2file(mpart.getInputStream(), Environment.getExternalStorageDirectory().toString() + "/temp/" + fileName); + } else if (mpart.isMimeType("multipart*//*")) { + saveAttachMent(mpart); + } else { + fileName = mpart.getFileName(); + if ((fileName != null) + && (fileName.toLowerCase().indexOf("GB2312") != -1)) { + fileName = MimeUtility.decodeText(fileName); + //saveFile(fileName, mpart.getInputStream()); + } + } + } + } else if (part.isMimeType("message/rfc822")) { + saveAttachMent((Part) part.getContent()); + } + return fileName; + }*/ + + /** + * 【设置附件存放路径】 + */ + + public void setAttachPath(String attachpath) { + this.saveAttachPath = attachpath; + } + + /** + * + * 设置日期显示本格式 + */ + public void setDateFormat(String format) throws Exception { + this.dateformat = format; + } + + /** + * 【获得附件存放路径】 + */ + + public String getAttachPath() { + return saveAttachPath; + } + + /** + * 【真正的保存附件到指定目录里】 + */ + +/* private void saveFile(String fileName, InputStream in) throws Exception { + + String osName = System.getProperty("os.name"); + String storedir = getAttachPath(); + String separator = ""; + if (osName == null) + osName = ""; + if (osName.toLowerCase().indexOf("win") != -1) { + separator = "\\"; + if (storedir == null || storedir.equals("")) + storedir = "/"; + } else { + separator = "/"; + storedir = Environment.getExternalStorageDirectory().toString() + "/temp/"; + } + File storefile = new File(storedir + fileName); + BufferedOutputStream bos = null; + BufferedInputStream bis = null; + try { + bos = new BufferedOutputStream(new FileOutputStream(storefile)); + bis = new BufferedInputStream(in); + int c; + while ((c = bis.read()) != -1) { + bos.write(c); + bos.flush(); + } + } catch (Exception exception) { + exception.printStackTrace(); + throw new Exception("文件保存失败!"); + } finally { + bos.close(); + bis.close(); + } + }*/ + +} diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/MailSenter.java" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/MailSenter.java" new file mode 100644 index 0000000..ad44c51 --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/MailSenter.java" @@ -0,0 +1,166 @@ + +package com.hzu.feirty.MailIM.utils; + +import android.os.Handler; + +import com.hzu.feirty.MailIM.db.Email; + +import java.util.ArrayList; +import java.util.Date; +import java.util.Properties; + +import javax.activation.CommandMap; +import javax.activation.DataHandler; +import javax.activation.FileDataSource; +import javax.activation.MailcapCommandMap; +import javax.mail.Address; +import javax.mail.Authenticator; +import javax.mail.Message; +import javax.mail.Multipart; +import javax.mail.PasswordAuthentication; +import javax.mail.Session; +import javax.mail.Transport; +import javax.mail.internet.InternetAddress; +import javax.mail.internet.MimeBodyPart; +import javax.mail.internet.MimeMessage; +import javax.mail.internet.MimeMultipart; +import javax.mail.internet.MimeUtility; + +public class MailSenter { + + private String host; + private String username; + private String password; + + private Handler handler; + + // private static final String SMTPHOST = "smtphost"; + // private static final String USERNAME = "username"; + // private static final String PASSWORD = "password"; + // private static MailSenter instance; + + // public static MailSenter getInstance(EditMailActivity context) { + // if (instance == null) { + // instance = new MailSenter(PreferencesUtil.getSharedStringData(context, + // SMTPHOST), PreferencesUtil.getSharedStringData(context, USERNAME), + // PreferencesUtil.getSharedStringData(context, PASSWORD)); + // } + // return instance; + // } + + /** + * 构造方法 + * + * @param host 邮箱服务器 + * @param username 邮箱用户全名。例如:test@qq.com + * @param password 邮箱用户密码 + */ + public MailSenter(Handler handler, String host, String username, String password) { + this.handler = handler; + this.host = host; + this.username = username; + this.password = password; + } + + /** + * 发送邮件 + * + * @param mailTo 收件人email地址 + * @param mailSubject 邮件标题 + * @param mailBody 邮件正文 + * @throws Exception + */ + public void send(String mailTo, String mailSubject, String mailBody) throws Exception { + send(mailTo, mailSubject, mailBody, null, null); + } + + /** + * 发送邮件 + * + * @param email 邮件对象 + * @throws Exception + */ + public void send(Email email) throws Exception { + send(email.getTo(), email.getSubject(), email.getContent(), email.getAttachments(), null); + } + + /** + * 发送邮件 + * + * @param mailTo 收件人email地址 + * @param mailSubject 邮件标题 + * @param mailBody 邮件正文 + * @param attachments 附件 + * @param personalName 邮件显示的发送人名称 + * @throws Exception + */ + public void send(String mailTo, String mailSubject, String mailBody, ArrayList attachments, + String personalName) throws Exception { + try { + Properties props = new Properties(); + Authenticator auth = new Email_Autherticator(); + // 进行邮件服务器用户认证 + /** QQ邮箱需要建立ssl连接 */ + props.put("mail.smtp.host", host); + props.put("mail.smtp.auth", "true"); + props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); + props.setProperty("mail.smtp.port", "465"); + props.setProperty("mail.smtp.socketFactory.port", "465"); + Session session = Session.getInstance(props, auth); + session.setDebug(true); + // 设置session,和邮件服务器进行通讯。 + MimeMessage message = new MimeMessage(session); + message.setSentDate(new Date()); // 设置邮件发送日期 + message.setFrom(new InternetAddress(username, personalName)); // 设置邮件发送者的地址 + + String[] addrs = mailTo.split(","); + Address[] to = new InternetAddress[addrs.length]; + for (int i = 0; i < addrs.length; i++) { + to[i] = new InternetAddress(addrs[i]); + } + message.addRecipients(Message.RecipientType.TO, to); + + message.setSubject(mailSubject); // 设置邮件主题 + // message.setContent("foobar, "text/html; charset=UTF-8"); + //message.setText(mailBody);// 设置邮件正文 + Multipart mpRoot = new MimeMultipart(); + MimeBodyPart mimeBodyPart = new MimeBodyPart(); + mimeBodyPart.setContent(mailBody, "text/html;charset=gb2312"); + mpRoot.addBodyPart(mimeBodyPart); + for (int i = 0; i < attachments.size(); i++) { + MimeBodyPart mpAttachments = new MimeBodyPart(); + mpAttachments.setDataHandler(new DataHandler(new FileDataSource(attachments.get(i)))); + mpAttachments.setFileName(MimeUtility.encodeText(attachments.get(i).substring + (attachments.get(i).lastIndexOf("/") + 1))); + mpRoot.addBodyPart(mpAttachments); + } + message.setContent(mpRoot); + + // 设置mailcap支持多种格式 + MailcapCommandMap mc = (MailcapCommandMap) CommandMap.getDefaultCommandMap(); + mc.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html"); + mc.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml"); + mc.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain"); + mc.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed"); + mc.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822"); + CommandMap.setDefaultCommandMap(mc); + Transport.send(message); // 发送邮件 + handler.obtainMessage(1).sendToTarget(); + } catch (Exception ex) { + ex.printStackTrace(); + handler.obtainMessage(999).sendToTarget(); + throw new Exception(ex.getMessage()); + } + } + + /** + * 用来进行服务器对用户的认证 + */ + public class Email_Autherticator extends Authenticator { + @Override + public PasswordAuthentication getPasswordAuthentication() { + return new PasswordAuthentication(username, password); + } + } + +} diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/NetUtil.java" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/NetUtil.java" new file mode 100644 index 0000000..6d697cf --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/NetUtil.java" @@ -0,0 +1,34 @@ +package com.hzu.feirty.MailIM.utils; + +import android.content.Context; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; + +/** + * Created by Administrator on 2017-6-28. + */ + +public class NetUtil { + private static final String IDENTITY = "saveidentity"; + public static boolean isNetworkConnected(Context context) { + if (context != null) { + ConnectivityManager mConnectivityManager = (ConnectivityManager) context + .getSystemService(Context.CONNECTIVITY_SERVICE); + NetworkInfo mNetworkInfo = mConnectivityManager + .getActiveNetworkInfo(); + if (mNetworkInfo != null) { + return mNetworkInfo.isAvailable(); + } + } + return false; + } + public static boolean isIdentity(Context context){ + if(context!=null){ + String str= PreferencesUtil.getSharedStringData(context,IDENTITY); + if(!str.contains("aaaa")){ + return false; + } + } + return true; + } +} diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/PreferencesUtil.java" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/PreferencesUtil.java" new file mode 100644 index 0000000..ff359ed --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/PreferencesUtil.java" @@ -0,0 +1,95 @@ +/** + * PreferencesUtil()类 + *个人设置参数的封装类 + * SAVEUSER:记住密码 -- AUTOLOGIN:自动登陆 + * USERNAME:用户名 -- PASSWORD:密码 + * POP3HOST、SMTPHOST +*/ + + +package com.hzu.feirty.MailIM.utils; + +import android.content.Context; +import android.content.SharedPreferences; +import android.preference.PreferenceManager; + +public class PreferencesUtil { + + private static SharedPreferences sp; + + private static void init(Context context) { + if (sp == null) { + sp = PreferenceManager.getDefaultSharedPreferences(context); + } + } + + public static void setSharedIntData(Context context, String key, int value) { + if (sp == null) { + init(context); + } + sp.edit().putInt(key, value).commit(); + } + + public static int getSharedIntData(Context context, String key) { + if (sp == null) { + init(context); + } + return sp.getInt(key, 0); + } + + public static void setSharedlongData(Context context, String key, long value) { + if (sp == null) { + init(context); + } + sp.edit().putLong(key, value).commit(); + } + + public static long getSharedlongData(Context context, String key) { + if (sp == null) { + init(context); + } + return sp.getLong(key, 0l); + } + + public static void setSharedFloatData(Context context, String key, float value) { + if (sp == null) { + init(context); + } + sp.edit().putFloat(key, value).commit(); + } + + public static Float getSharedFloatData(Context context, String key) { + if (sp == null) { + init(context); + } + return sp.getFloat(key, 0f); + } + + public static void setSharedBooleanData(Context context, String key, boolean value) { + if (sp == null) { + init(context); + } + sp.edit().putBoolean(key, value).commit(); + } + + public static Boolean getSharedBooleanData(Context context, String key) { + if (sp == null) { + init(context); + } + return sp.getBoolean(key, false); + } + + public static void setSharedStringData(Context context, String key, String value) { + if (sp == null) { + init(context); + } + sp.edit().putString(key, value).commit(); + } + + public static String getSharedStringData(Context context, String key) { + if (sp == null) { + init(context); + } + return sp.getString(key, ""); + } +} diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/SharedPrefsUtil.java" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/SharedPrefsUtil.java" new file mode 100644 index 0000000..f71b68d --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/SharedPrefsUtil.java" @@ -0,0 +1,43 @@ +package com.hzu.feirty.MailIM.utils; + +import android.content.Context; +import android.content.SharedPreferences; + +/** + * SharedPreferences存储数据方式工具类 + * @author zuolongsnail + */ +public class SharedPrefsUtil { + public final static String SETTING = "Setting"; + public static void putValue(Context context, String key, int value) { + SharedPreferences.Editor sp = context.getSharedPreferences(SETTING, Context.MODE_PRIVATE).edit(); + sp.putInt(key, value); + sp.commit(); + } + public static void putValue(Context context,String key, boolean value) { + SharedPreferences.Editor sp = context.getSharedPreferences(SETTING, Context.MODE_PRIVATE).edit(); + sp.putBoolean(key, value); + sp.commit(); + } + public static void putValue(Context context,String key, String value) { + SharedPreferences.Editor sp = context.getSharedPreferences(SETTING, Context.MODE_PRIVATE).edit(); + sp.putString(key, value); + sp.commit(); + } + public static int getValue(Context context,String key, int defValue) { + SharedPreferences sp = context.getSharedPreferences(SETTING, Context.MODE_PRIVATE); + int value = sp.getInt(key, defValue); + return value; + } + public static boolean getValue(Context context,String key, boolean defValue) { + SharedPreferences sp = context.getSharedPreferences(SETTING, Context.MODE_PRIVATE); + boolean value = sp.getBoolean(key, defValue); + return value; + } + public static String getValue(Context context,String key, String defValue) { + SharedPreferences sp = context.getSharedPreferences(SETTING, Context.MODE_PRIVATE); + String value = sp.getString(key, defValue); + return value; + } +} + diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/StudentDao.java" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/StudentDao.java" new file mode 100644 index 0000000..979c894 --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/StudentDao.java" @@ -0,0 +1,56 @@ +package com.hzu.feirty.MailIM.utils; + +import android.content.Context; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; +import com.hzu.feirty.MailIM.db.Student; +import java.util.ArrayList; +import java.util.List; + +/** + * Created by Administrator on 2017-6-24. + */ + +public class StudentDao { + private StudentSQLiteOpenHelper helper; + + public StudentDao(Context context){ + helper =new StudentSQLiteOpenHelper(context); + } + public StudentDao(){ + helper =new StudentSQLiteOpenHelper(null); + } + public void insert(Student student) { + SQLiteDatabase db = helper.getWritableDatabase(); + if(!find(student.getNumber())) { + db.execSQL("insert into student (number) values(?)", new String[]{student.getNumber()}); + } + db.close(); + } + public List queryAll(){ + SQLiteDatabase db = helper.getWritableDatabase(); + Cursor c =db.query("student",null,null,null,null,null,"number DESC"); + List list = new ArrayList(); + while(c.moveToNext()){ + long id =c.getLong(c.getColumnIndex("_id")); + String number = c.getString(1); + list.add(new Student(id,number)); + } + c.close(); + db.close(); + return list; + } + + public boolean find(String number){ + SQLiteDatabase db = helper.getWritableDatabase(); + Cursor cursor = db.query("student", new String[]{"id", "number"}, "number=?", new String[]{number}, null, null, "id"); + while (cursor.moveToNext()) { + String id = cursor.getString(cursor.getColumnIndex("id")); + if (id!=null) { + return true; + } + } + return false; + } + +} diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/StudentSQLiteOpenHelper.java" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/StudentSQLiteOpenHelper.java" new file mode 100644 index 0000000..26b8c38 --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/StudentSQLiteOpenHelper.java" @@ -0,0 +1,27 @@ +package com.hzu.feirty.MailIM.utils; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; + +/** + * Created by Administrator on 2017-6-24. + */ + +public class StudentSQLiteOpenHelper extends SQLiteOpenHelper { + public StudentSQLiteOpenHelper(Context context) { + super(context,"student.db",null,2); + // TODO Auto-generated constructor stub + } + @Override + public void onCreate(SQLiteDatabase db) { + // TODO Auto-generated method stub + db.execSQL("create table student( id integer primary key autoincrement ,number varchar(30))"); + } + + @Override + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { + // TODO Auto-generated method stub + + } +} diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/ToastUtil.java" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/ToastUtil.java" new file mode 100644 index 0000000..6c3bd13 --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/ToastUtil.java" @@ -0,0 +1,14 @@ +package com.hzu.feirty.MailIM.utils; + +import android.content.Context; +import android.widget.Toast; + +/** + * Created by Administrator on 2016/1/1. + */ +public class ToastUtil { + + public static void show(Context context, String content) { + Toast.makeText(context, content, Toast.LENGTH_SHORT).show(); + } +} diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/TranCharset.java" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/TranCharset.java" new file mode 100644 index 0000000..b8b92be --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/java/com/hzu/feirty/MailIM/utils/TranCharset.java" @@ -0,0 +1,140 @@ +/** + + */ + +package com.hzu.feirty.MailIM.utils; + +/** + + */ +public class TranCharset { + + private static final String PRE_FIX_UTF = "&#x"; + private static final String POS_FIX_UTF = ";"; + + public TranCharset() { + } + + /** + * Translate charset encoding to unicode + * + * @param sTemp charset encoding is gb2312 + * @return charset encoding is unicode + */ + public static String XmlFormalize(String sTemp) { + StringBuffer sb = new StringBuffer(); + + if (sTemp == null || sTemp.equals("")) { + return ""; + } + String s = TranCharset.TranEncodeTOGB(sTemp); + for (int i = 0; i < s.length(); i++) { + char cChar = s.charAt(i); + if (TranCharset.isGB2312(cChar)) { + sb.append(PRE_FIX_UTF); + sb.append(Integer.toHexString(cChar)); + sb.append(POS_FIX_UTF); + } else { + switch ((int) cChar) { + case 32: + sb.append(" "); + break; + case 34: + sb.append("""); + break; + case 38: + sb.append("&"); + break; + case 60: + sb.append("<"); + break; + case 62: + sb.append(">"); + break; + default: + sb.append(cChar); + } + } + } + return sb.toString(); + } + + /** + * ���ַ��������ʽת��GB2312 + * + * @param str + * @return + */ + public static String TranEncodeTOGB(String str) { + try { + String strEncode = TranCharset.getEncoding(str); + String temp = new String(str.getBytes(strEncode), "GBK"); + return temp; + } catch (java.io.IOException ex) { + + return null; + } + } + + /** + * �ж������ַ��Ƿ�Ϊgb2312�ı����ʽ + * + * @param c �����ַ� + * @return �����gb2312�����棬���򷵻ؼ� + */ + public static boolean isGB2312(char c) { + Character ch = Character.valueOf(c); + String sCh = ch.toString(); + try { + byte[] bb = sCh.getBytes("gb2312"); + if (bb.length > 1) { + return true; + } + } catch (java.io.UnsupportedEncodingException ex) { + return false; + } + return false; + } + + /** + * �ж��ַ����ı��� + * + * @param str + * @return + */ + public static String getEncoding(String str) { + String encode = "GB2312"; + try { + if (str.equals(new String(str.getBytes(encode), encode))) { + String s = encode; + return s; + } + } catch (Exception exception) { + } + encode = "ISO-8859-1"; + try { + if (str.equals(new String(str.getBytes(encode), encode))) { + String s1 = encode; + return s1; + } + } catch (Exception exception1) { + } + encode = "UTF-8"; + try { + if (str.equals(new String(str.getBytes(encode), encode))) { + String s2 = encode; + return s2; + } + } catch (Exception exception2) { + } + encode = "GBK"; + try { + if (str.equals(new String(str.getBytes(encode), encode))) { + String s3 = encode; + return s3; + } + } catch (Exception exception3) { + } + return ""; + } +} diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/anim/push_left_in.xml" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/anim/push_left_in.xml" new file mode 100644 index 0000000..da0bd77 --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/anim/push_left_in.xml" @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/anim/push_left_out.xml" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/anim/push_left_out.xml" new file mode 100644 index 0000000..cc2b4d6 --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/anim/push_left_out.xml" @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/anim/push_right_in.xml" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/anim/push_right_in.xml" new file mode 100644 index 0000000..41e6b9e --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/anim/push_right_in.xml" @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/anim/push_right_out.xml" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/anim/push_right_out.xml" new file mode 100644 index 0000000..244e76b --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/anim/push_right_out.xml" @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/bg_layout_shape.xml" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/bg_layout_shape.xml" new file mode 100644 index 0000000..626dbb3 --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/bg_layout_shape.xml" @@ -0,0 +1,7 @@ + + + + + + + diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/bottom_layout_selector.xml" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/bottom_layout_selector.xml" new file mode 100644 index 0000000..0b26654 --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/bottom_layout_selector.xml" @@ -0,0 +1,6 @@ + + + + + + diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/bottom_select.xml" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/bottom_select.xml" new file mode 100644 index 0000000..9cc37de --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/bottom_select.xml" @@ -0,0 +1,5 @@ + + + + + diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/bottom_unselect.xml" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/bottom_unselect.xml" new file mode 100644 index 0000000..9d29846 --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/bottom_unselect.xml" @@ -0,0 +1,5 @@ + + + + + diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/explorer_back.png" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/explorer_back.png" new file mode 100644 index 0000000..443b9a3 Binary files /dev/null and "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/explorer_back.png" differ diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/explorer_file.png" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/explorer_file.png" new file mode 100644 index 0000000..5407b52 Binary files /dev/null and "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/explorer_file.png" differ diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/explorer_folder.png" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/explorer_folder.png" new file mode 100644 index 0000000..376588d Binary files /dev/null and "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/explorer_folder.png" differ diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/footer_btn_main.png" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/footer_btn_main.png" new file mode 100644 index 0000000..e7b3012 Binary files /dev/null and "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/footer_btn_main.png" differ diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/footer_btn_main_preesed.png" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/footer_btn_main_preesed.png" new file mode 100644 index 0000000..8e4fd47 Binary files /dev/null and "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/footer_btn_main_preesed.png" differ diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/footer_btn_mycenter.png" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/footer_btn_mycenter.png" new file mode 100644 index 0000000..eb8aaba Binary files /dev/null and "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/footer_btn_mycenter.png" differ diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/footer_btn_mycenter_preesed.png" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/footer_btn_mycenter_preesed.png" new file mode 100644 index 0000000..97a0ea0 Binary files /dev/null and "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/footer_btn_mycenter_preesed.png" differ diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/footer_search_btn.png" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/footer_search_btn.png" new file mode 100644 index 0000000..b413dbc Binary files /dev/null and "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/footer_search_btn.png" differ diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/footer_search_btn_preesed.png" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/footer_search_btn_preesed.png" new file mode 100644 index 0000000..575bade Binary files /dev/null and "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/footer_search_btn_preesed.png" differ diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/ic_action_name.png" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/ic_action_name.png" new file mode 100644 index 0000000..a7a9866 Binary files /dev/null and "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/ic_action_name.png" differ diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/ic_launcher.png" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/ic_launcher.png" new file mode 100644 index 0000000..288b665 Binary files /dev/null and "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/ic_launcher.png" differ diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/ic_refalsh.png" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/ic_refalsh.png" new file mode 100644 index 0000000..253a7d2 Binary files /dev/null and "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/ic_refalsh.png" differ diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/mid_layout_selector.xml" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/mid_layout_selector.xml" new file mode 100644 index 0000000..a78a5b8 --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/mid_layout_selector.xml" @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/setting_arrow.png" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/setting_arrow.png" new file mode 100644 index 0000000..d0a416d Binary files /dev/null and "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/setting_arrow.png" differ diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/single_layout_selector.xml" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/single_layout_selector.xml" new file mode 100644 index 0000000..9cea5bd --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/single_layout_selector.xml" @@ -0,0 +1,8 @@ + + + + + + + + diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/single_select.xml" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/single_select.xml" new file mode 100644 index 0000000..6659095 --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/single_select.xml" @@ -0,0 +1,5 @@ + + + + + diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/single_unselect.xml" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/single_unselect.xml" new file mode 100644 index 0000000..a1ddb2b --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/single_unselect.xml" @@ -0,0 +1,5 @@ + + + + + diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/top_layout_selector.xml" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/top_layout_selector.xml" new file mode 100644 index 0000000..7c8a2c6 --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/top_layout_selector.xml" @@ -0,0 +1,6 @@ + + + + + + diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/top_select.xml" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/top_select.xml" new file mode 100644 index 0000000..5f3f06c --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/top_select.xml" @@ -0,0 +1,5 @@ + + + + + diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/top_unselect.xml" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/top_unselect.xml" new file mode 100644 index 0000000..48e3fac --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-hdpi/top_unselect.xml" @@ -0,0 +1,5 @@ + + + + + diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-mdpi/ic_action_name.png" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-mdpi/ic_action_name.png" new file mode 100644 index 0000000..3b5c58f Binary files /dev/null and "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-mdpi/ic_action_name.png" differ diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-mdpi/ic_refalsh.png" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-mdpi/ic_refalsh.png" new file mode 100644 index 0000000..906aec0 Binary files /dev/null and "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-mdpi/ic_refalsh.png" differ diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-xhdpi/ic_action_name.png" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-xhdpi/ic_action_name.png" new file mode 100644 index 0000000..5cf705f Binary files /dev/null and "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-xhdpi/ic_action_name.png" differ diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-xhdpi/ic_refalsh.png" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-xhdpi/ic_refalsh.png" new file mode 100644 index 0000000..060ee0f Binary files /dev/null and "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-xhdpi/ic_refalsh.png" differ diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-xxhdpi/ic_action_name.png" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-xxhdpi/ic_action_name.png" new file mode 100644 index 0000000..d14a9cb Binary files /dev/null and "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-xxhdpi/ic_action_name.png" differ diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-xxhdpi/ic_refalsh.png" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-xxhdpi/ic_refalsh.png" new file mode 100644 index 0000000..34f5c1c Binary files /dev/null and "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable-xxhdpi/ic_refalsh.png" differ diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable/footer_itembg_selector.xml" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable/footer_itembg_selector.xml" new file mode 100644 index 0000000..5e716d2 --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable/footer_itembg_selector.xml" @@ -0,0 +1,8 @@ + + + + + + + + diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable/footer_main_selector.xml" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable/footer_main_selector.xml" new file mode 100644 index 0000000..07b653e --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable/footer_main_selector.xml" @@ -0,0 +1,8 @@ + + + + + + + + diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable/footer_mycenter_selector.xml" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable/footer_mycenter_selector.xml" new file mode 100644 index 0000000..5bfc095 --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable/footer_mycenter_selector.xml" @@ -0,0 +1,8 @@ + + + + + + + + diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable/footer_search_selector.xml" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable/footer_search_selector.xml" new file mode 100644 index 0000000..4c5614d --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable/footer_search_selector.xml" @@ -0,0 +1,8 @@ + + + + + + + + diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable/text_area.xml" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable/text_area.xml" new file mode 100644 index 0000000..2f60852 --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/drawable/text_area.xml" @@ -0,0 +1,19 @@ + + + + + + + + + + + + \ No newline at end of file diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/layout/activity_identity.xml" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/layout/activity_identity.xml" new file mode 100644 index 0000000..3509b84 --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/layout/activity_identity.xml" @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/layout/activity_main.xml" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/layout/activity_main.xml" new file mode 100644 index 0000000..f25e50f --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/layout/activity_main.xml" @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/layout/activity_open.xml" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/layout/activity_open.xml" new file mode 100644 index 0000000..f9d6fee --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/layout/activity_open.xml" @@ -0,0 +1,10 @@ + + + + + \ No newline at end of file diff --git "a/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/layout/activity_register.xml" "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/layout/activity_register.xml" new file mode 100644 index 0000000..8657f41 --- /dev/null +++ "b/src/MailIM/\345\256\242\346\210\267\347\253\257/MailIM/app/src/main/res/layout/activity_register.xml" @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + +