IprintHome.java 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695
  1. package epson.print;
  2. import android.app.Activity;
  3. import android.app.AlertDialog;
  4. import android.content.ActivityNotFoundException;
  5. import android.content.DialogInterface;
  6. import android.content.Intent;
  7. import android.content.IntentFilter;
  8. import android.content.pm.PackageManager;
  9. import android.content.res.Configuration;
  10. import android.graphics.Point;
  11. import android.net.Uri;
  12. import android.os.AsyncTask;
  13. import android.os.Build;
  14. import android.os.Bundle;
  15. import android.os.Handler;
  16. import android.os.Message;
  17. import android.view.Display;
  18. import android.view.Menu;
  19. import android.view.MenuItem;
  20. import android.view.View;
  21. import android.view.ViewGroup;
  22. import android.widget.AdapterView;
  23. import android.widget.ImageView;
  24. import android.widget.ListAdapter;
  25. import android.widget.TextView;
  26. import android.widget.Toast;
  27. import androidx.annotation.NonNull;
  28. import com.epson.iprint.prtlogger.Analytics;
  29. import com.epson.memcardacc.DirectorySelecterActivity;
  30. import com.epson.mobilephone.common.ble.BleAsyncTask;
  31. import com.epson.mobilephone.common.ble.BleWork;
  32. import com.epson.mobilephone.common.guide.NoticeGuideActivity;
  33. import com.epson.mobilephone.common.license.LicenseTopActivity;
  34. import com.epson.mobilephone.common.maintain2.MaintainPrinter2;
  35. import com.epson.mobilephone.common.wifidirect.ActivityRequestLocationPermission;
  36. import com.epson.mobilephone.common.wifidirect.NfcTagUtils;
  37. import com.epson.mobilephone.common.wifidirect.WiFiDirectManager;
  38. import com.felipecsl.asymmetricgridview.library.widget.AsymmetricGridView;
  39. import java.io.File;
  40. import java.util.ArrayList;
  41. import java.util.List;
  42. import java.util.ListIterator;
  43. import java.util.Locale;
  44. import epson.common.Constants;
  45. import epson.common.ExternalFileUtils;
  46. import epson.common.InformationGuide;
  47. import epson.common.IprintLicenseInfo;
  48. import epson.common.IprintUserSurveyInfo;
  49. import epson.common.Utils;
  50. import epson.maintain.activity.MaintainActivity;
  51. import epson.print.Util.BuyInkUrl;
  52. import epson.print.Util.EPLog;
  53. import epson.print.inkrpln.InkRplnInfoClient;
  54. import epson.print.inkrpln.InkRplnRepository;
  55. import epson.print.inkrpln.JumpUrlProgressActivity;
  56. import epson.print.screen.PrintSetting;
  57. import epson.server.utils.Define;
  58. import epson.support.SupportActivity;
  59. /**
  60. * 主页
  61. */
  62. public class IprintHome extends ActivityIACommon implements CommonDefine {
  63. private static final int EPS_COMM_BID = 2;
  64. private static final int EPS_ERR_PRINTER_NOT_FOUND = -1300;
  65. private static final int EPS_PRB_BYID = 1;
  66. private static final int EPS_PRNERR_COMM = 102;
  67. public static final String MORE_APP_URL = "http://iprint.epsonconnect.com/app/index.htm";
  68. private static final int REQUEST_CODE_LICENSE_CHECK = 1;
  69. private static final int REQUEST_CODE_LOCATION_PERMISSION = 2;
  70. private static final int REQUEST_GUIDE_DISPLAY = 3;
  71. private static final int STRING_ID_READY_INK = 2131625026;
  72. private static final String TAG = "IprintHome";
  73. public static MaintainPrinter2 mPrinter;
  74. private final int Menu_Show_Support = 1;
  75. private final int PROBE_ERROR = 2;
  76. private final int PROBE_PRINTER = 0;
  77. private final int STATUS_ERROR = 3;
  78. private final int UPDATE_PRINTER_STATUS = 1;
  79. private boolean bRejectLocationPermission = false;
  80. String deviceID;
  81. boolean finishProbe;
  82. private boolean mActivityForeground;
  83. private ArrayList<Runnable> mForegroundRunnableList;
  84. Handler mHandler = new Handler(new Handler.Callback() {
  85. public boolean handleMessage(Message message) {
  86. EPLog.m313i(TAG, "HandlerCallback");
  87. switch (message.what) {
  88. case 0:
  89. EPLog.m313i(TAG, "PROBE_PRINTER");
  90. IprintHome iprintHome = IprintHome.this;
  91. finishProbe = false;
  92. if (task == null) {
  93. IprintHome iprintHome2 = IprintHome.this;
  94. iprintHome2.task = new ProbePrinter();
  95. task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, new Void[0]);
  96. mHandler.sendEmptyMessage(1);
  97. break;
  98. }
  99. break;
  100. case 1:
  101. EPLog.m313i(TAG, "UPDATE_PRINTER_STATUS");
  102. int[] unused = mPrinterStatus = mPrinter.getMPrinterInfor().getMStatus();
  103. EpLog.m69d("status " + mPrinterStatus);
  104. EpLog.m69d("printerLocation " + printerLocation);
  105. EpLog.m69d("finishProbe" + finishProbe);
  106. String str = "";
  107. if (printerLocation == 1 && WiFiDirectManager.getConnectInfo(getApplicationContext(), WiFiDirectManager.DEVICE_TYPE_PRINTER) != null) {
  108. str = getString(R.string.wifi_direct_status);
  109. } else if (printerLocation == 1 || (printerLocation == 3 && Utils.isConnectedWifi(getApplicationContext()))) {
  110. if (finishProbe) {
  111. str = getString(R.string.printer_ready);
  112. }
  113. } else if (printerLocation != 2 && (printerLocation != 3 || Utils.isConnectedWifi(getApplicationContext()))) {
  114. str = getString(R.string.not_select_status);
  115. } else if (!Utils.isOnline(getApplicationContext())) {
  116. str = getString(R.string.cannot_connect);
  117. } else {
  118. str = getString(R.string.remote_can_connect);
  119. }
  120. printerStatus.setText(str);
  121. EPLog.m313i(TAG, "Stt title: " + str);
  122. break;
  123. case 2:
  124. printerStatus.setText(getString(R.string.comm_error));
  125. EPLog.m313i(TAG, "Stt title: " + getString(R.string.comm_error));
  126. break;
  127. case 3:
  128. EPLog.m313i(TAG, "STATUS_ERROR");
  129. int[] intArray = message.getData().getIntArray("STATUS_ERROR");
  130. if (intArray == null) {
  131. printerStatus.setText(getString(R.string.upon_error));
  132. EPLog.m313i(TAG, "Stt titlef: " + getString(R.string.upon_error));
  133. break;
  134. } else {
  135. EPLog.m313i(TAG, "statusError[0] : " + intArray[0]);
  136. EPLog.m313i(TAG, "statusError[1] : " + intArray[1]);
  137. if (intArray[0] != 2 && intArray[0] != 1 && intArray[0] != 3) {
  138. if (intArray[0] != 4 || (intArray[1] != 102 && intArray[1] != -1300)) {
  139. printerStatus.setText(getString(R.string.upon_error));
  140. EPLog.m313i(TAG, "Stt title: " + getString(R.string.upon_error));
  141. break;
  142. } else {
  143. printerStatus.setText(getString(R.string.comm_error));
  144. EPLog.m313i(TAG, "Stt title: " + getString(R.string.comm_error));
  145. break;
  146. }
  147. } else {
  148. printerStatus.setText(getString(R.string.printer_ready));
  149. EPLog.m313i(TAG, "Stt title: " + getString(R.string.printer_ready));
  150. break;
  151. }
  152. }
  153. break;
  154. default:
  155. EPLog.m313i(TAG, DirectorySelecterActivity.PARAM_DEFAULT_DIR);
  156. printerName.setText(getString(R.string.printer_not_select));
  157. ((ImageView) findViewById(R.id.printer_icon)).setVisibility(View.GONE);
  158. break;
  159. }
  160. return true;
  161. }
  162. });
  163. final IprintHomeMenuLogging mIprintHomeLogging = new IprintHomeMenuLogging();
  164. ViewGroup mLayout;
  165. private int[] mPrinterStatus;
  166. AsymmetricGridView menulist;
  167. int printerIcon;
  168. private String printerId;
  169. private String printerIp;
  170. private int printerLocation;
  171. TextView printerName;
  172. String printerSerial;
  173. TextView printerStatus;
  174. ProbePrinter task;
  175. epson.print.Util.Utils util = new epson.print.Util.Utils();
  176. public void onCreate(Bundle bundle) {
  177. super.onCreate(bundle);
  178. mLayout = (ViewGroup) getLayoutInflater().inflate(R.layout.iprint_home_layout, (ViewGroup) null);
  179. menulist = (AsymmetricGridView) mLayout.findViewById(R.id.menu_list);
  180. printerName = (TextView) mLayout.findViewById(R.id.home_printer_name);
  181. printerStatus = (TextView) mLayout.findViewById(R.id.home_printer_status);
  182. setContentView((View) mLayout);
  183. setActionBar(R.string.app_name, false);
  184. if (mPrinter == null) {
  185. mPrinter = MaintainPrinter2.getInstance();
  186. }
  187. File file = new File(DEFAULT_FOLDER + ".print");
  188. if (file.exists()) {
  189. boolean isDirectory = file.isDirectory();
  190. } else {
  191. File file2 = new File(DEFAULT_FOLDER);
  192. file2.renameTo(new File(DEFAULT_FOLDER + ".print"));
  193. }
  194. ExternalFileUtils.getInstance(this).initTempViewDir();
  195. ExternalFileUtils.getInstance(this).initTempCRDir();
  196. ExternalFileUtils.getInstance(this).initPrintDir();
  197. if (Build.VERSION.SDK_INT >= 24) {
  198. deleteSharedPreferences(Define.SHARED_PREFERENCES_NAME2);
  199. } else {
  200. getSharedPreferences(Define.SHARED_PREFERENCES_NAME2, 3).edit().clear().commit();
  201. }
  202. mForegroundRunnableList = new ArrayList<>();
  203. mActivityForeground = true;
  204. findViewById(R.id.home_select_printer).setOnClickListener(new View.OnClickListener() {
  205. public void onClick(View view) {
  206. Intent intent = new Intent(this, MaintainActivity.class);
  207. intent.setAction("android.intent.action.VIEW");
  208. startActivity(intent);
  209. Analytics.sendAction(getApplicationContext(), Analytics.ACTION_ID_HOME_MAINTAIN);
  210. }
  211. });
  212. if (bundle == null) {
  213. startLicenseCheckActivity();
  214. } else if (!IprintLicenseInfo.isAgreedCurrentVersion(getApplicationContext())) {
  215. finish();
  216. }
  217. }
  218. private void startLicenseCheckActivity() {
  219. IprintLicenseInfo.beforeLicenseCheck(getApplicationContext());
  220. startActivityForResult(LicenseTopActivity.getStartIntent(getApplicationContext(), new IprintLicenseInfo(), new IprintUserSurveyInfo()), 1);
  221. }
  222. private void requestLocationPermission() {
  223. if (!bRejectLocationPermission && !ActivityRequestLocationPermission.canAccessWiFiInfo(this, 4) && BleWork.isStartBleProcess(this, true)) {
  224. ActivityRequestLocationPermission.requestLocationPermission((Activity) this, 2);
  225. }
  226. }
  227. protected void onActivityResult(int i, int i2, Intent intent) {
  228. super.onActivityResult(i, i2, intent);
  229. switch (i) {
  230. case 1:
  231. if (i2 != -1) {
  232. finish();
  233. return;
  234. } else {
  235. startGuideActivity();
  236. return;
  237. }
  238. case 2:
  239. if (i2 != -1) {
  240. bRejectLocationPermission = true;
  241. return;
  242. }
  243. return;
  244. case 3:
  245. requestLocationPermission();
  246. return;
  247. default:
  248. return;
  249. }
  250. }
  251. public void onConfigurationChanged(Configuration configuration) {
  252. EPLog.m305d(TAG, "onConfigurationChanged");
  253. super.onConfigurationChanged(configuration);
  254. updateMenu();
  255. }
  256. public boolean onOptionsItemSelected(MenuItem menuItem) {
  257. if (menuItem.getItemId() == R.id.information_setting) {
  258. callInformation();
  259. }
  260. return super.onOptionsItemSelected(menuItem);
  261. }
  262. public boolean onCreateOptionsMenu(Menu menu) {
  263. super.onCreateOptionsMenu(menu);
  264. getMenuInflater().inflate(R.menu.information_menu, menu);
  265. return true;
  266. }
  267. private void callInformation() {
  268. startActivity(new Intent(this, SupportActivity.class));
  269. Analytics.sendAction(this, Analytics.ACTION_ID_HOME_INFO);
  270. }
  271. protected void onResume() {
  272. EPLog.m313i(TAG, "onResume()");
  273. EpLog.m76i();
  274. super.onResume();
  275. ExternalFileUtils.getInstance(this).initTempViewDir();
  276. ExternalFileUtils.getInstance(this).initTempCRDir();
  277. ExternalFileUtils.getInstance(this).initPrintDir();
  278. new PrintSetting(this, (PrintSetting.Kind) null).resetPrintSettings();
  279. updatePrinterInfo();
  280. NfcTagUtils.enableForegroundDispatch(this, (IntentFilter[]) null, (String[][]) null);
  281. Analytics.countScreen(this, Analytics.SCREEN_ID_HOME);
  282. if (!executeForegroundQueue() && BleWork.isStartBleProcess(this, true)) {
  283. BleAsyncTask.blePrinterCheck(this);
  284. }
  285. mActivityForeground = true;
  286. }
  287. private boolean executeForegroundQueue() {
  288. boolean z = false;
  289. if (isFinishing()) {
  290. return false;
  291. }
  292. ListIterator<Runnable> listIterator = mForegroundRunnableList.listIterator();
  293. while (listIterator.hasNext()) {
  294. mHandler.post(listIterator.next());
  295. listIterator.remove();
  296. z = true;
  297. }
  298. return z;
  299. }
  300. public void onBackPressed() {
  301. moveTaskToBack(true);
  302. }
  303. public void onPause() {
  304. ProbePrinter probePrinter;
  305. EPLog.m313i(TAG, "onPause()");
  306. super.onPause();
  307. mHandler.removeMessages(0);
  308. mHandler.removeMessages(1);
  309. int i = printerLocation;
  310. if ((i == 1 || i == 3) && (probePrinter = task) != null) {
  311. probePrinter.cancelTask(true);
  312. task = null;
  313. }
  314. BleAsyncTask.blePrinterCheckStop();
  315. NfcTagUtils.disableForegroundDispatch(this);
  316. mActivityForeground = false;
  317. }
  318. protected void onStop() {
  319. super.onStop();
  320. }
  321. protected void onDestroy() {
  322. super.onDestroy();
  323. mPrinter.doReleaseDriver();
  324. }
  325. protected void onNewIntent(Intent intent) {
  326. NfcTagUtils.EpsonNfcConnectInfo parseNECTag;
  327. super.onNewIntent(intent);
  328. if ("android.nfc.action.NDEF_DISCOVERED".equals(intent.getAction()) && (parseNECTag = NfcTagUtils.parseNECTag(this, intent)) != null && NfcTagUtils.isNeedChangePrinter(this, printerId, parseNECTag)) {
  329. Intent intent2 = new Intent();
  330. intent2.setClass(this, ActivityNfcPrinter.class);
  331. intent2.putExtra(ActivityNfcPrinter.CONNECTINFO, parseNECTag);
  332. startActivity(intent2);
  333. }
  334. }
  335. private void updatePrinterInfo() {
  336. EpLog.d(TAG, "updatePrinterInfo");
  337. MyPrinter curPrinter = MyPrinter.getCurPrinter(this);
  338. if (curPrinter.getName() != null) {
  339. printerName.setText(curPrinter.getUserDefName(this));
  340. } else {
  341. printerName.setText(getString(R.string.printer_not_select));
  342. }
  343. printerId = curPrinter.getPrinterId();
  344. printerIp = curPrinter.getIp();
  345. printerLocation = curPrinter.getLocation();
  346. printerSerial = curPrinter.getSerialNo();
  347. deviceID = curPrinter.getName();
  348. EpLog.d(TAG, "" + printerId + ":" + printerIp + ":" + printerLocation + ":" + printerSerial + ":" + deviceID);
  349. updatePrinterIcon();
  350. updateMenu();
  351. if (!(printerLocation == 1 && WiFiDirectManager.getConnectInfo(getApplicationContext(), WiFiDirectManager.DEVICE_TYPE_PRINTER) == null) && (printerLocation != 3 || !Utils.isConnectedWifi(getApplicationContext()))) {
  352. EpLog.d(TAG, "########################");
  353. mHandler.sendEmptyMessage(1);
  354. return;
  355. }
  356. EpLog.d(TAG, "@@@@@@@@@@@@@@@@@@@@@@");
  357. mHandler.sendEmptyMessage(0);
  358. }
  359. private void updatePrinterIcon() {
  360. if (printerName.getText().equals(getString(R.string.printer_not_select))) {
  361. ((ImageView) findViewById(R.id.printer_icon)).setVisibility(View.GONE);
  362. return;
  363. }
  364. ((ImageView) findViewById(R.id.printer_icon)).setVisibility(View.VISIBLE);
  365. switch (printerLocation) {
  366. case 1:
  367. ((ImageView) findViewById(R.id.printer_icon)).setImageResource(R.drawable.print_local);
  368. return;
  369. case 2:
  370. ((ImageView) findViewById(R.id.printer_icon)).setImageResource(R.drawable.print_remote);
  371. return;
  372. case 3:
  373. ((ImageView) findViewById(R.id.printer_icon)).setImageResource(R.drawable.print_ip);
  374. return;
  375. default:
  376. return;
  377. }
  378. }
  379. private class ProbePrinter extends AsyncTask<Void, Void, Boolean> {
  380. private ProbePrinter() {
  381. }
  382. protected void onPreExecute() {
  383. EPLog.m313i(TAG, "ProbePrinter onPreExecute");
  384. printerStatus.setText("");
  385. }
  386. protected Boolean doInBackground(Void... voidArr) {
  387. EPLog.m313i(TAG, "ProbePrinter doInBackground");
  388. mPrinter.doInitDriver(this, 2);
  389. if (printerLocation == 1 || printerLocation == 3) {
  390. if (printerId != null) {
  391. int doProbePrinter = mPrinter.doProbePrinter(60, printerId, printerIp, printerLocation);
  392. while (doProbePrinter != 0) {
  393. try {
  394. if (isCancelled()) {
  395. break;
  396. }
  397. mHandler.sendEmptyMessage(2);
  398. Thread.sleep(10000);
  399. doProbePrinter = mPrinter.doProbePrinter(60, printerId, printerIp, printerLocation);
  400. } catch (InterruptedException e) {
  401. e.printStackTrace();
  402. return false;
  403. }
  404. }
  405. finishProbe = true;
  406. if (isCancelled()) {
  407. EPLog.m313i(TAG, "Cancelled ProbePrinter");
  408. return false;
  409. }
  410. int doSetPrinter = mPrinter.doSetPrinter();
  411. EPLog.m313i(TAG, "Set Printer result: " + doSetPrinter);
  412. if (doSetPrinter != 0) {
  413. mHandler.sendEmptyMessage(2);
  414. return false;
  415. }
  416. while (!isCancelled()) {
  417. try {
  418. int doGetStatus = mPrinter.doGetStatus();
  419. EPLog.m313i(TAG, "Printer Status result: " + doGetStatus);
  420. if (doGetStatus != 0) {
  421. mHandler.sendEmptyMessage(2);
  422. } else {
  423. int[] unused = mPrinterStatus = mPrinter.getMPrinterInfor().getMStatus();
  424. if (mPrinterStatus[0] != 0) {
  425. Message message = new Message();
  426. message.what = 3;
  427. Bundle bundle = new Bundle();
  428. bundle.putIntArray("STATUS_ERROR", mPrinterStatus);
  429. message.setData(bundle);
  430. mHandler.sendMessage(message);
  431. } else {
  432. mHandler.sendEmptyMessage(1);
  433. }
  434. }
  435. Thread.sleep(10000);
  436. } catch (InterruptedException e2) {
  437. EPLog.m318w("Background", "InterruptedException");
  438. e2.printStackTrace();
  439. }
  440. }
  441. EPLog.m313i(TAG, "task Cancelled");
  442. } else {
  443. int unused2 = printerLocation = 0;
  444. }
  445. }
  446. return true;
  447. }
  448. public boolean cancelTask(boolean z) {
  449. EPLog.m313i(TAG, "ProbePrinter cancelTask IN");
  450. mPrinter.doCancelFindPrinter();
  451. EPLog.m313i(TAG, "ProbePrinter cancelTask OUT");
  452. return cancel(z);
  453. }
  454. protected void onPostExecute(Boolean bool) {
  455. EPLog.m313i(TAG, "ProbePrinter onPostExecute");
  456. if (bool.booleanValue()) {
  457. mHandler.sendEmptyMessage(1);
  458. }
  459. }
  460. }
  461. private void updateMenu() {
  462. Display defaultDisplay = getWindowManager().getDefaultDisplay();
  463. Point point = new Point();
  464. defaultDisplay.getSize(point);
  465. int i = point.x;
  466. int i2 = point.y;
  467. ViewGroup.MarginLayoutParams marginLayoutParams = (ViewGroup.MarginLayoutParams) menulist.getLayoutParams();
  468. int i3 = ((i) * 0.1d);
  469. marginLayoutParams.setMargins(i3, ((i2) * 0.025d), i3, 0);
  470. menulist.setLayoutParams(marginLayoutParams);
  471. final IconTextArrayAdapter iconTextArrayAdapter = new IconTextArrayAdapter(this, R.layout.menu_item_btn, makeMenu(), menulist);
  472. menulist.setAdapter((ListAdapter) iconTextArrayAdapter);
  473. menulist.setRequestedColumnCount(3);
  474. menulist.setRequestedHorizontalSpacing(com.felipecsl.asymmetricgridview.library.Utils.dpToPx(this, 3.0f));
  475. menulist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
  476. public void onItemClick(AdapterView<?> adapterView, View view, int i, long j) {
  477. Intent intent = new Intent();
  478. IconTextArrayItem iconTextArrayItem = (IconTextArrayItem) iconTextArrayAdapter.getItem(i);
  479. if (iconTextArrayItem == null) {
  480. return;
  481. }
  482. if (!iconTextArrayItem.showMenu) {
  483. AlertDialog.Builder builder = new AlertDialog.Builder(this);
  484. builder.setTitle(iconTextArrayItem.menuId);
  485. if (printerLocation == 3) {
  486. builder.setMessage(R.string.CannotIPMes);
  487. } else if (printerLocation == 2) {
  488. builder.setMessage(R.string.CannotRemoteMes);
  489. } else {
  490. return;
  491. }
  492. builder.setPositiveButton(R.string.str_ok, new DialogInterface.OnClickListener() {
  493. public void onClick(DialogInterface dialogInterface, int i) {
  494. }
  495. });
  496. builder.show();
  497. } else if (getString(iconTextArrayItem.menuId).equalsIgnoreCase(getString(R.string.support_buy_ink))) {
  498. getBuyInkTask().execute(new Void[0]);
  499. Analytics.sendAction(getApplicationContext(), Analytics.ACTION_ID_HOME_BUY_INK);
  500. } else if (iconTextArrayItem.menuId == R.string.ready_ink_button_name) {
  501. Analytics.sendAction(getApplicationContext(), Analytics.ACTION_ID_HOME_READY_INK);
  502. openReadyInkPage();
  503. } else {
  504. if (getString(iconTextArrayItem.menuId).equalsIgnoreCase(getString(R.string.FunctionName_iPrint_MoreApps))) {
  505. intent.setAction("android.intent.action.VIEW");
  506. intent.setData(Uri.parse(MORE_APP_URL));
  507. mIprintHomeLogging.countupMoreApp(this);
  508. } else if (!iconTextArrayItem.ClassName.equalsIgnoreCase("")) {
  509. if (!iconTextArrayItem.appId.equals("Creative") && !iconTextArrayItem.appId.equalsIgnoreCase("3DFramePrint") && !iconTextArrayItem.appId.equalsIgnoreCase("CameraCopy") && !iconTextArrayItem.appId.equalsIgnoreCase("MultiRollPrint") && !iconTextArrayItem.appId.equalsIgnoreCase("CardPrint") && !iconTextArrayItem.appId.equalsIgnoreCase("Nenga")) {
  510. intent.setClassName(iconTextArrayItem.PackageName, iconTextArrayItem.ClassName);
  511. mIprintHomeLogging.sendUiTapData(getApplicationContext(), iconTextArrayItem.ClassName);
  512. } else if (iconTextArrayItem.isInstall) {
  513. intent.setAction(iconTextArrayItem.ClassName);
  514. intent.setFlags(270532608);
  515. intent.putExtra(Constants.PRINTER_ID, printerId);
  516. intent.putExtra(Constants.PRINTER_IP, printerIp);
  517. intent.putExtra(Constants.PRINTER_NAME, deviceID);
  518. intent.putExtra("PRINTER_SERIAL", printerSerial);
  519. intent.putExtra("Function", iconTextArrayItem.key);
  520. intent.putExtra("PRINTER_SSID", WiFiDirectManager.getConnectInfo(getApplicationContext(), WiFiDirectManager.DEVICE_TYPE_PRINTER));
  521. mIprintHomeLogging.countUpInstalledOtherApps(this, iconTextArrayItem);
  522. } else {
  523. intent.setAction("android.intent.action.VIEW");
  524. intent.setData(Uri.parse(iconTextArrayItem.googleStoreUrl));
  525. mIprintHomeLogging.countUpNotInstalledOtherApps(this, iconTextArrayItem);
  526. }
  527. }
  528. try {
  529. startActivity(intent);
  530. } catch (ActivityNotFoundException unused) {
  531. Toast.makeText(this, R.string.upon_error, 0).show();
  532. }
  533. }
  534. }
  535. });
  536. }
  537. private List<IconTextArrayItem> makeMenu() {
  538. ArrayList arrayList = new ArrayList();
  539. MenudataAdapter menudataAdapter = new MenudataAdapter();
  540. menudataAdapter.setContext(getApplicationContext());
  541. menudataAdapter.parseJSONFile();
  542. String str = deviceID;
  543. if (str == null || str.length() < 4 || MyPrinter.PRINTER_USB.equals(printerIp)) {
  544. deviceID = "DEFAULT";
  545. }
  546. ArrayList<IconTextArrayItem> MenuListfordeviceID = menudataAdapter.MenuListfordeviceID(deviceID, printerLocation, this);
  547. int i = 0;
  548. if (!isJapaneseDevice()) {
  549. int i2 = 0;
  550. while (true) {
  551. if (i2 >= MenuListfordeviceID.size()) {
  552. break;
  553. } else if (MenuListfordeviceID.get(i2).appId.equalsIgnoreCase("CardPrint")) {
  554. MenuListfordeviceID.remove(i2);
  555. break;
  556. } else {
  557. i2++;
  558. }
  559. }
  560. }
  561. while (true) {
  562. if (i >= MenuListfordeviceID.size()) {
  563. break;
  564. }
  565. if (MenuListfordeviceID.get(i).appId.equalsIgnoreCase("Nenga")) {
  566. MyPrinter curPrinter = MyPrinter.getCurPrinter(this);
  567. if (curPrinter.getPrinterId() == null || curPrinter.getLang() != 1 || !isJapaneseDevice() || MyPrinter.PRINTER_USB.equals(printerIp)) {
  568. MenuListfordeviceID.remove(i);
  569. } else {
  570. try {
  571. if (201900000 > getPackageManager().getPackageInfo(MenuListfordeviceID.get(i).PackageName, 128).versionCode) {
  572. MenuListfordeviceID.remove(i);
  573. break;
  574. }
  575. } catch (PackageManager.NameNotFoundException e) {
  576. e.printStackTrace();
  577. }
  578. }
  579. }
  580. i++;
  581. }
  582. MenuListfordeviceID.remove(i);
  583. arrayList.addAll(MenuListfordeviceID);
  584. addBuyInkOrReadyInkToMenu(arrayList);
  585. return arrayList;
  586. }
  587. private void addBuyInkOrReadyInkToMenu(@NonNull List<IconTextArrayItem> list) {
  588. switch (getBuyInkReadyInkButtonType()) {
  589. case 1:
  590. addReadyInkToMenuEnd(list);
  591. return;
  592. case 2:
  593. addReadyInkToMenuEnd(list);
  594. return;
  595. default:
  596. return;
  597. }
  598. }
  599. private int getBuyInkReadyInkButtonType() {
  600. InkRplnInfoClient.InkRsInfo info = new InkRplnRepository(false).getInfo(this);
  601. if (info == null) {
  602. return 0;
  603. }
  604. return info.getButtonType();
  605. }
  606. private void addReadyInkToMenuEnd(@NonNull List<IconTextArrayItem> list) {
  607. list.add(new IconTextArrayItem(R.drawable.image_ready_ink, R.string.ready_ink_button_name, ""));
  608. }
  609. private void addBuyInkToMenu(@NonNull List<IconTextArrayItem> list) {
  610. IconTextArrayItem iconTextArrayItem;
  611. if (printerLocation == 0) {
  612. iconTextArrayItem = new IconTextArrayItem(R.drawable.image_buyink_disabled, R.string.support_buy_ink, "");
  613. iconTextArrayItem.showMenu = false;
  614. } else {
  615. iconTextArrayItem = new IconTextArrayItem(R.drawable.image_buyink, R.string.support_buy_ink, "");
  616. }
  617. list.add(1, iconTextArrayItem);
  618. }
  619. class BuyInkTask extends AsyncTask<Void, Void, Void> {
  620. BuyInkTask() {
  621. }
  622. protected void onPreExecute() {
  623. if (task != null) {
  624. task.cancelTask(true);
  625. task = null;
  626. }
  627. }
  628. protected Void doInBackground(Void... voidArr) {
  629. startActivity(new Intent("android.intent.action.VIEW", Uri.parse(BuyInkUrl.urlSupport(getApplicationContext(), CommonDefine.URL_INK))));
  630. return null;
  631. }
  632. }
  633. private BuyInkTask getBuyInkTask() {
  634. return new BuyInkTask();
  635. }
  636. private void openReadyInkPage() {
  637. startActivity(new Intent(this, JumpUrlProgressActivity.class));
  638. }
  639. private boolean isJapaneseDevice() {
  640. return Locale.getDefault().getLanguage().equalsIgnoreCase(Locale.JAPAN.getLanguage()) || Locale.getDefault().getLanguage().equalsIgnoreCase(Locale.JAPANESE.getLanguage());
  641. }
  642. public void startGuideActivity() {
  643. InformationGuide informationGuide = new InformationGuide(getApplicationContext());
  644. Intent intent = new Intent(this, NoticeGuideActivity.class);
  645. intent.putExtra(NoticeGuideActivity.KEY_HTML_PATH, informationGuide.getHtmlPath());
  646. intent.putExtra(NoticeGuideActivity.KEY_GUIDE_VER, InformationGuide.GUIDE_VER);
  647. intent.putExtra(NoticeGuideActivity.KEY_BOOT_MODE, NoticeGuideActivity.MODE_AUTO);
  648. startActivityForResult(intent, 3);
  649. }
  650. }