package com.qianfeng.gl4study.snssdk.activity; import android.app.ActionBar; import android.app.Activity; import android.app.AlertDialog; import android.content.ContentValues; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.net.wifi.WifiManager; import android.os.Bundle; import android.os.Handler; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; import android.widget.ImageView; import com.qianfeng.gl4study.snssdk.R; import com.qianfeng.gl4study.snssdk.adapter.SnssdkMainAdapter; import com.qianfeng.gl4study.snssdk.constant.Constant; import com.qianfeng.gl4study.snssdk.databases.SnssdkDatabasesManager; import com.qianfeng.gl4study.snssdk.model.SingletonImage; import com.qianfeng.gl4study.snssdk.model.SingletonVideo; import com.qianfeng.gl4study.snssdk.model.SingletonWord; import com.qianfeng.gl4study.snssdk.model.Snssdk; import com.qianfeng.gl4study.snssdk.tasks.SnssdkTask; import com.qianfeng.gl4study.snssdk.tasks.TaskProcessor; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.LinkedList; /** * Created with IntelliJ IDEA. * I'm glad to share my knowledge with you all. * User:Gaolei * Date:2015/3/12 * Email:pdsfgl@live.com */ public class FlyleafActivity extends Activity implements TaskProcessor, View.OnClickListener,Runnable { private String levelURL = "level="; private String categoryIdURL = "&category_id="; private String countURL = "&count="; //标记需要获取的段子的参数 private int level = 6; private int category = 1; private int count = 20; private long minTime = 0; private boolean isFirstRun; private boolean isStopping; private AlertDialog dialog; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_flyleaf); //设置隐藏ActionBar隐藏标题,图标,上界面的title栏 ActionBar actionBar = getActionBar(); if (actionBar != null) { actionBar.setDisplayShowTitleEnabled(false); actionBar.setDisplayShowHomeEnabled(false); actionBar.hide(); } interTutorial(); } /** * 进入导航页 */ private void interTutorial(){ SharedPreferences sharedPreferences = getSharedPreferences("config", MODE_PRIVATE); isFirstRun = sharedPreferences.getBoolean("isFirstRun", true); Log.d("FlyleafActivity","isFirstRun:"+ isFirstRun); Intent intent; if(isFirstRun){ SharedPreferences.Editor edit; edit = sharedPreferences.edit(); edit.putBoolean("isFirstRun", false); edit.apply(); intent = new Intent(this, TutorialActivity.class); startActivity(intent); FlyleafActivity.this.finish(); }else { //等待对话框被点击的子线程 new Thread(this).start(); if(getAPNType(this) == -1){//无网络连接 AlertDialog.Builder builder = new AlertDialog.Builder(this); LayoutInflater inflater = LayoutInflater.from(this); View view = inflater.inflate(R.layout.item_dialog_menu,null); ImageView wifiImage = (ImageView) view.findViewById(R.id.ig_dialog_wifi); ImageView netImage = (ImageView) view.findViewById(R.id.ig_dialog_net); Button offButton = (Button) view.findViewById(R.id.btn_dialog_off); wifiImage.setOnClickListener(this); netImage.setOnClickListener(this); offButton.setOnClickListener(this); Log.d("onCreate","无网络"); builder.setTitle("提示:").setView(view); dialog = builder.create(); dialog.show(); }else { isStopping = true; } } } @Override public void onClick(View v) { int id = v.getId(); switch (id){ case R.id.ig_dialog_wifi: ((ImageView)v).setImageResource(R.drawable.ic_dialog_wifi_on); setStateWIFI(); dialog.dismiss(); isStopping = true; getNewDataFromntent(); break; case R.id.ig_dialog_net: ((ImageView)v).setImageResource(R.drawable.ic_dialog_net_on); setMobileDataStatus(this,true); dialog.dismiss(); isStopping = true; getNewDataFromntent(); break; case R.id.btn_dialog_off: dialog.dismiss(); isStopping = true; break; } } private void getNewDataFromntent(){ SharedPreferences sharedPreferences = getSharedPreferences("config", MODE_PRIVATE); long minWordTime = sharedPreferences.getLong("minTimeWord", 0); long minImageTime = sharedPreferences.getLong("minTimeImage", 0); StringBuilder stringBuilder = new StringBuilder(); SnssdkTask snssdkTask = new SnssdkTask(this); String minTimeURL = "&min_time="; stringBuilder.append(Constant.SNSSDK_CONTENT_LIST_URL) .append(levelURL).append(6)//推荐分类 .append(categoryIdURL).append(1)//文本段子 .append(countURL).append(count) //返回20个数据 .append(minTimeURL).append(minWordTime); snssdkTask.execute(stringBuilder.toString(), 1 + ""); snssdkTask = new SnssdkTask(this); stringBuilder.append(Constant.SNSSDK_CONTENT_LIST_URL) .append(levelURL).append(6)//推荐分类 .append(categoryIdURL).append(2)//图片段子 .append(countURL).append(count) //返回20个数据 .append(minTimeURL).append(minImageTime); snssdkTask.execute(stringBuilder.toString(), 2 + ""); } @Override public void processResult(JSONObject result, String flag) { Log.d("processResult","加载 "+isFirstRun); if (result != null) { //段子列表 Log.d("processResult","加载1 "+isFirstRun); try { String resultFlag = result.getString("message"); if ("success".equals(resultFlag)) { JSONObject data = result.getJSONObject("data"); JSONArray dataJSONArray = data.getJSONArray("data"); int type = Integer.parseInt(flag); for (int i = 0; i < dataJSONArray.length(); i++) { JSONObject jsonObject = dataJSONArray.getJSONObject(i); Snssdk snssdk = new Snssdk(); snssdk.parseInformation(jsonObject, type); ContentValues values = snssdk.getContentValues(); SnssdkDatabasesManager.createInstance(this).saveSnssdk(values,snssdk.getGroup_id()); } saveTimeToSingleton(this,type,data.getLong("min_time"),data.getLong("max_time")); } } catch (JSONException e) { e.printStackTrace(); } } } @Override protected void onStart() { super.onStart(); } /** * 网络获取的数据保存到单例和配置文件中 * * @param type 段子更新的类型 * @param minTime1 返回的时间 * @param maxTime1 返回的时间 */ private void saveTimeToSingleton(Context context,int type,long minTime1, long maxTime1) { SharedPreferences sharedPreferences = getSharedPreferences("config", MODE_PRIVATE); SharedPreferences.Editor edit = sharedPreferences.edit(); if (type == 1) { edit.putLong("minTimeWord", minTime1); edit.putLong("maxTimeWord", maxTime1); } else if (type == 2) { edit.putLong("minTimeImage", minTime1); edit.putLong("maxTimeImage", maxTime1); } edit.apply(); } /** * 打开移动网络 * @return */ public void setMobileDataStatus(Context context, boolean enabled) { ConnectivityManager conMgr = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); // ConnectivityManager类 Class<?> conMgrClass = null; // ConnectivityManager类中的字段 Field iConMgrField = null; // IConnectivityManager类的引用 Object iConMgr = null; // IConnectivityManager类 Class<?> iConMgrClass = null; // setMobileDataEnabled方法 Method setMobileDataEnabledMethod = null; try { // 取得ConnectivityManager类 conMgrClass = Class.forName(conMgr.getClass().getName()); // 取得ConnectivityManager类中的对象Mservice iConMgrField = conMgrClass.getDeclaredField("mService"); // 设置mService可访问 iConMgrField.setAccessible(true); // 取得mService的实例化类IConnectivityManager iConMgr = iConMgrField.get(conMgr); // 取得IConnectivityManager类 iConMgrClass = Class.forName(iConMgr.getClass().getName()); // 取得IConnectivityManager类中的setMobileDataEnabled(boolean)方法 setMobileDataEnabledMethod = iConMgrClass.getDeclaredMethod( "setMobileDataEnabled", Boolean.TYPE); // 设置setMobileDataEnabled方法是否可访问 setMobileDataEnabledMethod.setAccessible(true); // 调用setMobileDataEnabled方法 setMobileDataEnabledMethod.invoke(iConMgr, enabled); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (SecurityException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } /** * 打开WIFI * @return */ private void setStateWIFI(){ WifiManager wm =(WifiManager)getSystemService(Context.WIFI_SERVICE); wm.setWifiEnabled(true); } /** * 获取当前的网络状态 * @param context * @return -1:没有网络 1:WIFI网络2:wap网络3:net网络 */ public static int getAPNType(Context context){ int netType = -1; ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = connMgr.getActiveNetworkInfo(); if(networkInfo==null){ return netType; } int nType = networkInfo.getType(); if(nType==ConnectivityManager.TYPE_MOBILE){ Log.e("networkInfo.getExtraInfo()", "networkInfo.getExtraInfo() is "+networkInfo.getExtraInfo()); if(networkInfo.getExtraInfo().toLowerCase().equals("cmnet")){ netType = 3; } else{ netType = 2; } } else if(nType== ConnectivityManager.TYPE_WIFI){ netType = 1; } return netType; } @Override public void run() { //循环等待对话框的点击事件 do{ try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } }while (!isStopping); //等待5秒调节网络事件使网络通常进入主界面 try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } Intent intent = new Intent(FlyleafActivity.this, MainActivity.class); startActivity(intent); FlyleafActivity.this.finish(); } }