304 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			304 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package cc.winboll.studio.apputils;
 | ||
| 
 | ||
| import android.app.Activity;
 | ||
| import android.content.ComponentName;
 | ||
| import android.content.Intent;
 | ||
| import android.content.pm.PackageManager;
 | ||
| import android.content.pm.ResolveInfo;
 | ||
| import android.net.Uri;
 | ||
| import android.os.Bundle;
 | ||
| import android.view.Menu;
 | ||
| import android.view.MenuItem;
 | ||
| import android.view.View;
 | ||
| import android.widget.Toast;
 | ||
| import android.widget.Toolbar;
 | ||
| import cc.winboll.studio.apputils.R;
 | ||
| import cc.winboll.studio.libappbase.LogUtils;
 | ||
| import cc.winboll.studio.libappbase.LogView;
 | ||
| import cc.winboll.studio.libappbase.utils.ToastUtils;
 | ||
| import java.util.List;
 | ||
| import java.util.Set;
 | ||
| 
 | ||
| final public class MainActivity extends Activity {
 | ||
| 
 | ||
| 	public static final String TAG = "MainActivity";
 | ||
| 
 | ||
|     public static final int REQUEST_QRCODEDECODE_ACTIVITY = 0;
 | ||
| 
 | ||
|     Toolbar mToolbar;
 | ||
|     LogView mLogView;
 | ||
| //
 | ||
| //    @Override
 | ||
| //    public Activity getActivity() {
 | ||
| //        return this;
 | ||
| //    }
 | ||
| 
 | ||
|     
 | ||
|     @Override
 | ||
|     protected void onCreate(Bundle savedInstanceState) {
 | ||
|         super.onCreate(savedInstanceState);
 | ||
|         setContentView(R.layout.activity_main);
 | ||
| 
 | ||
|         mLogView = findViewById(R.id.logview);
 | ||
|         mLogView.start();
 | ||
| 
 | ||
|         // 初始化工具栏
 | ||
|         mToolbar = findViewById(R.id.toolbar);
 | ||
|         setActionBar(mToolbar);
 | ||
| //        if (isEnableDisplayHomeAsUp()) {
 | ||
| //            // 显示后退按钮
 | ||
| //            getActionBar().setDisplayHomeAsUpEnabled(true);
 | ||
| //        }
 | ||
| //        getActionBar().setSubtitle(getTag());
 | ||
| 
 | ||
|         checkResolveActivity();
 | ||
|         archiveInstance();
 | ||
| 
 | ||
| 
 | ||
| 
 | ||
|         // 接收并处理 Intent 数据,函数 Intent 处理接收就直接返回
 | ||
|         //if (prosessIntents(getIntent())) return;
 | ||
|         // 以下正常创建主窗口
 | ||
| 
 | ||
| //        // 设置 WinBoLL 应用 UI 类型
 | ||
| //        WinBoLLApplication.setWinBoLLUI_TYPE(WinBoLLApplication.WinBoLLUI_TYPE.Aplication);
 | ||
| //        //ToastUtils.show("WinBoLLUI_TYPE " + WinBoLLApplication.getWinBoLLUI_TYPE());
 | ||
| //        LogUtils.d(TAG, "BuildConfig.DEBUG : " + Boolean.toString(BuildConfig.DEBUG));
 | ||
|     }
 | ||
| 
 | ||
|     boolean checkResolveActivity() {
 | ||
|         PackageManager packageManager = getPackageManager();
 | ||
|         //Intent intent = new Intent("your_action_here");
 | ||
|         Intent intent = getIntent();
 | ||
|         if (intent != null) {
 | ||
|             List<ResolveInfo> resolveInfoList = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
 | ||
|             if (resolveInfoList.size() > 0) {
 | ||
|                 // 传入的Intent action在Activity清单的intent-filter的action节点里有定义
 | ||
|                 if (intent.getAction() != null) {
 | ||
| //                    if (intent.getAction().equals(cc.winboll.studio.libapputils.intent.action.DEBUGVIEW)) {
 | ||
| //                        App.setIsDebug(true);
 | ||
| //                        //ToastUtils.show!("WinBoLLApplication.setIsDebug(true) by action : " + intent.getAction());
 | ||
| //
 | ||
| //                    }
 | ||
|                 }
 | ||
|                 return true;
 | ||
|             } else {
 | ||
|                 // 传入的Intent action在Activity清单的intent-filter的action节点里没有定义
 | ||
|                 //ToastUtils.show("false : " + intent.getAction());
 | ||
|                 return false;
 | ||
|             }
 | ||
| 
 | ||
|         }
 | ||
| 
 | ||
|         // action在清单文件中没有声明
 | ||
|         ToastUtils.show("false");
 | ||
|         return false;
 | ||
|     }
 | ||
| 
 | ||
|     void archiveInstance() {
 | ||
|         Intent intent = getIntent();
 | ||
|         StringBuilder sb = new StringBuilder("\n### Archive Instance ###\n");
 | ||
| 
 | ||
|         if (intent != null) {
 | ||
|             ComponentName componentName = intent.getComponent();
 | ||
|             if (componentName != null) {
 | ||
|                 String packageName = componentName.getPackageName();
 | ||
|                 //Log.d("AppStarter", "启动本应用的应用包名: " + packageName);
 | ||
|                 sb.append("启动本应用的应用包名: \n" + packageName);
 | ||
|             }
 | ||
| 
 | ||
|             sb.append("\nImplicit Intent Tracker :\n接收到的 Intent 动作: \n" + intent.getAction());
 | ||
|             Set<String> categories = intent.getCategories();
 | ||
|             if (categories != null) {
 | ||
|                 for (String category : categories) {
 | ||
|                     sb.append("\n接收到的 Intent 类别 :\n" + category);
 | ||
|                 }
 | ||
|             }
 | ||
|             Uri data = intent.getData();
 | ||
|             if (data != null) {
 | ||
|                 sb.append("\n接收到的 Intent 数据 :\n" + data.toString());
 | ||
|             }
 | ||
|         } else {
 | ||
|             sb.append("Intent is null.");
 | ||
|         }
 | ||
|         sb.append("\n\n");
 | ||
|         LogUtils.d(TAG, sb.toString());
 | ||
|     }
 | ||
| 
 | ||
| 
 | ||
|     @Override
 | ||
|     protected void onPostCreate(Bundle savedInstanceState) {
 | ||
|         super.onPostCreate(savedInstanceState);
 | ||
|         // 缓存当前 activity
 | ||
|         //WinBoLLActivityManager.getInstance(this).add(this);
 | ||
|     }
 | ||
| 
 | ||
|     @Override
 | ||
|     public void onDestroy() {
 | ||
|         //WinBoLLActivityManager.getInstance(this).registeRemove(this);
 | ||
|         super.onDestroy();
 | ||
|     }
 | ||
| 
 | ||
|     public void onTestLogClick(View view) {
 | ||
|         LogUtils.d(TAG, "onTestLogClick");
 | ||
|         Toast.makeText(getApplication(), "onTestLogClick", Toast.LENGTH_SHORT).show();
 | ||
|     }
 | ||
| 
 | ||
|     public void onTestLogActivity(View view) {
 | ||
| //        Intent intent = new Intent(this, LogActivity.class);
 | ||
| //        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
 | ||
| //        intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
 | ||
| //        startActivity(intent);
 | ||
| 
 | ||
|         //WinBoLLActivityManager.getInstance().printAvtivityListInfo();
 | ||
|         //WinBoLLActivityManager.getInstance(this).startWinBoLLActivity(this, LogActivity.class);
 | ||
|     }
 | ||
| 
 | ||
|     //
 | ||
|     // 处理传入的 Intent 数据
 | ||
|     //
 | ||
|     boolean prosessIntents(Intent intent) {
 | ||
|         if (intent == null 
 | ||
|             || intent.getAction() == null
 | ||
|             || intent.getAction().equals(""))
 | ||
|             return false;
 | ||
| 
 | ||
| //        if (intent.getAction().equals(StringToQrCodeView.ACTION_UNITTEST_QRCODE)) {
 | ||
| //            try {
 | ||
| //                WinBoLLActivity clazzActivity = UnitTestActivity.class.newInstance();
 | ||
| //                String tag = clazzActivity.getTag();
 | ||
| //                LogUtils.d(TAG, "String tag = clazzActivity.getTag(); tag " + tag);
 | ||
| //                Intent subIntent = new Intent(this, UnitTestActivity.class);
 | ||
| //                subIntent.setAction(intent.getAction());
 | ||
| //                File file = new File(getCacheDir(), UUID.randomUUID().toString());
 | ||
| //                //取出文件uri
 | ||
| //                Uri uri = intent.getData();
 | ||
| //                if (uri == null) {
 | ||
| //                    uri = intent.getParcelableExtra(Intent.EXTRA_STREAM);
 | ||
| //                }
 | ||
| //                //获取文件真实地址
 | ||
| //                String szSrcPath = UriUtils.getFileFromUri(getApplication(), uri);
 | ||
| //                if (TextUtils.isEmpty(szSrcPath)) {
 | ||
| //                    return false;
 | ||
| //                }
 | ||
| //
 | ||
| //                Files.copy(Paths.get(szSrcPath), Paths.get(file.getPath()));
 | ||
| //                //startWinBoLLActivity(subIntent, tag);
 | ||
| //                WinBoLLActivityManager.getInstance(this).startWinBoLLActivity(this, subIntent, UnitTestActivity.class);
 | ||
| //            } catch (IllegalAccessException | InstantiationException | IOException e) {
 | ||
| //                LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
 | ||
| //                // 函数处理异常返回失败
 | ||
| //                return false;
 | ||
| //            }
 | ||
| //        } else {
 | ||
| //            LogUtils.d(TAG, "prosessIntents|" + intent.getAction() + "|yet");
 | ||
| //            return false;
 | ||
| //        }
 | ||
|         return true;
 | ||
|     }
 | ||
| 
 | ||
|     @Override
 | ||
|     public boolean onCreateOptionsMenu(Menu menu) {
 | ||
|         //ToastUtils.show("onCreateOptionsMenu");
 | ||
|         getMenuInflater().inflate(R.menu.toolbar_main, menu);
 | ||
| //        if (isAddWinBoLLToolBar()) {
 | ||
| //            //ToastUtils.show("mIWinBoLL.isAddWinBoLLToolBar()");
 | ||
| //            getMenuInflater().inflate(R.menu.toolbar_winboll_shared_main, menu);
 | ||
| //        }
 | ||
|         if (App.isDebuging()) {
 | ||
|             getMenuInflater().inflate(R.menu.toolbar_studio_debug, menu);
 | ||
|         }
 | ||
| 
 | ||
|         return super.onCreateOptionsMenu(menu);
 | ||
|     }
 | ||
| 
 | ||
|     @Override
 | ||
|     public boolean onOptionsItemSelected(MenuItem item) {
 | ||
|         if (item.getItemId() == R.id.item_exit) {
 | ||
|             //exit();
 | ||
|             return true;
 | ||
| //        } else if (item.getItemId() == R.id.item_teststringtoqrcodeview) {
 | ||
| //            Intent intent = new Intent(this, TestStringToQRCodeViewActivity.class);
 | ||
| //            startActivityForResult(intent, REQUEST_QRCODEDECODE_ACTIVITY);
 | ||
| //            //WinBoLLActivityManager.getInstance(this).startWinBoLLActivity(this, TestStringToQrCodeViewActivity.class);
 | ||
|         } else if (item.getItemId() == R.id.item_testqrcodedecodeactivity) {
 | ||
|             Intent intent = new Intent(this, QRCodeDecodeActivity.class);
 | ||
|             startActivityForResult(intent, REQUEST_QRCODEDECODE_ACTIVITY);
 | ||
|         } else if (item.getItemId() == R.id.item_testcrashreport) {
 | ||
|             for (int i = Integer.MIN_VALUE; i < Integer.MAX_VALUE; i++) {
 | ||
|                 getString(i);
 | ||
|             }
 | ||
|             return true;
 | ||
|         } else if (item.getItemId() == R.id.item_log) {
 | ||
|             //WinBoLLActivityManager.getInstance(this).startWinBoLLActivity(this, LogActivity.class);
 | ||
|             return true;
 | ||
|         } else if (item.getItemId() == R.id.item_exitdebug) {
 | ||
|             //AboutView.setApp2NormalMode(this);
 | ||
|             return true;
 | ||
|         } else if (item.getItemId() == android.R.id.home) {
 | ||
|             //WinBoLLActivityManager.getInstance(this).finish(this);
 | ||
|             return true;
 | ||
|         }
 | ||
|         return super.onOptionsItemSelected(item);
 | ||
|     }
 | ||
| 
 | ||
| //    void exit() {
 | ||
| //        YesNoAlertDialog.OnDialogResultListener listener = new YesNoAlertDialog.OnDialogResultListener(){
 | ||
| //
 | ||
| //            @Override
 | ||
| //            public void onYes() {
 | ||
| //                //WinBoLLActivityManager.getInstance(getApplicationContext()).finishAll();
 | ||
| //            }
 | ||
| //
 | ||
| //            @Override
 | ||
| //            public void onNo() {
 | ||
| //            }
 | ||
| //        };
 | ||
| //        YesNoAlertDialog.show(this, "[ " + getString(R.string.app_name) + " ]", "Exit(Yes/No).\nIs close all activity?", listener);
 | ||
| //
 | ||
| //    }
 | ||
| 
 | ||
|     @Override
 | ||
|     public void onBackPressed() {
 | ||
| //        if (WinBoLLActivityManager.getInstance(getApplicationContext()).isFirstIWinBoLLActivity(this)) {
 | ||
| //            exit();
 | ||
| //        } else {
 | ||
| //            WinBoLLActivityManager.getInstance(this).finish(this);
 | ||
| //            super.onBackPressed();
 | ||
| //        }
 | ||
|     }
 | ||
| 
 | ||
|     
 | ||
|     public void onTestAssetsHtmlActivity(View view) {
 | ||
|         Intent intent = new Intent(this, AssetsHtmlActivity.class);
 | ||
|         intent.putExtra(AssetsHtmlActivity.EXTRA_HTMLFILENAME, "javascript_test.html");
 | ||
|         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
 | ||
|         intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
 | ||
|         startActivity(intent);
 | ||
|         //WinBoLLActivityManager.getInstance(this).startWinBoLLActivity(this, intent, AssetsHtmlActivity.class);
 | ||
|     }
 | ||
| 
 | ||
|     @Override
 | ||
|     protected void onResume() {
 | ||
|         super.onResume();
 | ||
|         mLogView.start();
 | ||
|     }
 | ||
| 
 | ||
|     /*@Override
 | ||
|      protected void onActivithyResult(int requestCode, int resultCode, Intent data) {
 | ||
|      switch (requestCode) {
 | ||
|      case REQUEST_QRCODEDECODE_ACTIVITY : {
 | ||
|      if (data != null) {
 | ||
|      String text = data.getStringExtra(QRCodeDecodeActivity.EXTRA_RESULT);
 | ||
|      ToastUtils.show(text);
 | ||
|      }
 | ||
|      break;
 | ||
|      }
 | ||
|      default : {
 | ||
|      //ToastUtils.show(String.format("%d, %d", requestCode, resultCode));
 | ||
|      super.prosessActivityResult(requestCode, resultCode, data);
 | ||
|      }
 | ||
|      }
 | ||
|      }*/
 | ||
| }
 | 
