IprintHome.java 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703
  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.i(TAG, "HandlerCallback");
  87. switch (message.what) {
  88. case 0:
  89. EPLog.i(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.i(TAG, "UPDATE_PRINTER_STATUS");
  102. int[] unused = mPrinterStatus = mPrinter.getMPrinterInfor().getMStatus();
  103. EPLog.d("status " + mPrinterStatus);
  104. EPLog.d("printerLocation " + printerLocation);
  105. EPLog.d("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.i(TAG, "Stt title: " + str);
  122. break;
  123. case 2:
  124. printerStatus.setText(getString(R.string.comm_error));
  125. EPLog.i(TAG, "Stt title: " + getString(R.string.comm_error));
  126. break;
  127. case 3:
  128. EPLog.i(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.i(TAG, "Stt titlef: " + getString(R.string.upon_error));
  133. break;
  134. } else {
  135. EPLog.i(TAG, "statusError[0] : " + intArray[0]);
  136. EPLog.i(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.i(TAG, "Stt title: " + getString(R.string.upon_error));
  141. break;
  142. } else {
  143. printerStatus.setText(getString(R.string.comm_error));
  144. EPLog.i(TAG, "Stt title: " + getString(R.string.comm_error));
  145. break;
  146. }
  147. } else {
  148. printerStatus.setText(getString(R.string.printer_ready));
  149. EPLog.i(TAG, "Stt title: " + getString(R.string.printer_ready));
  150. break;
  151. }
  152. }
  153. break;
  154. default:
  155. EPLog.i(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(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(IprintHome.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. //首次启动跳转到同意隐私协议页面
  213. if (bundle == null) {
  214. startLicenseCheckActivity();
  215. } else if (!IprintLicenseInfo.isAgreedCurrentVersion(getApplicationContext())) {
  216. finish();
  217. }
  218. }
  219. private void startLicenseCheckActivity() {
  220. IprintLicenseInfo.beforeLicenseCheck(getApplicationContext());
  221. startActivityForResult(LicenseTopActivity.getStartIntent(getApplicationContext(), new IprintLicenseInfo(), new IprintUserSurveyInfo()), 1);
  222. }
  223. private void requestLocationPermission() {
  224. if (!bRejectLocationPermission && !ActivityRequestLocationPermission.canAccessWiFiInfo(this, 4) && BleWork.isStartBleProcess(this, true)) {
  225. ActivityRequestLocationPermission.requestLocationPermission((Activity) this, 2);
  226. }
  227. }
  228. protected void onActivityResult(int i, int i2, Intent intent) {
  229. super.onActivityResult(i, i2, intent);
  230. switch (i) {
  231. case 1:
  232. if (i2 != -1) {
  233. finish();
  234. return;
  235. } else {
  236. startGuideActivity();
  237. return;
  238. }
  239. case 2:
  240. if (i2 != -1) {
  241. bRejectLocationPermission = true;
  242. return;
  243. }
  244. return;
  245. case 3:
  246. requestLocationPermission();
  247. return;
  248. default:
  249. return;
  250. }
  251. }
  252. public void onConfigurationChanged(Configuration configuration) {
  253. EPLog.d(TAG, "onConfigurationChanged");
  254. super.onConfigurationChanged(configuration);
  255. updateMenu();
  256. }
  257. public boolean onOptionsItemSelected(MenuItem menuItem) {
  258. if (menuItem.getItemId() == R.id.information_setting) {
  259. callInformation();
  260. }
  261. return super.onOptionsItemSelected(menuItem);
  262. }
  263. public boolean onCreateOptionsMenu(Menu menu) {
  264. super.onCreateOptionsMenu(menu);
  265. getMenuInflater().inflate(R.menu.information_menu, menu);
  266. return true;
  267. }
  268. private void callInformation() {
  269. startActivity(new Intent(this, SupportActivity.class));
  270. Analytics.sendAction(this, Analytics.ACTION_ID_HOME_INFO);
  271. }
  272. protected void onResume() {
  273. EPLog.i(TAG, "onResume()");
  274. EPLog.i();
  275. super.onResume();
  276. ExternalFileUtils.getInstance(this).initTempViewDir();
  277. ExternalFileUtils.getInstance(this).initTempCRDir();
  278. ExternalFileUtils.getInstance(this).initPrintDir();
  279. new PrintSetting(this, (PrintSetting.Kind) null).resetPrintSettings();
  280. updatePrinterInfo();
  281. NfcTagUtils.enableForegroundDispatch(this, (IntentFilter[]) null, (String[][]) null);
  282. Analytics.countScreen(this, Analytics.SCREEN_ID_HOME);
  283. if (!executeForegroundQueue() && BleWork.isStartBleProcess(this, true)) {
  284. BleAsyncTask.blePrinterCheck(this);
  285. }
  286. mActivityForeground = true;
  287. }
  288. private boolean executeForegroundQueue() {
  289. boolean z = false;
  290. if (isFinishing()) {
  291. return false;
  292. }
  293. ListIterator<Runnable> listIterator = mForegroundRunnableList.listIterator();
  294. while (listIterator.hasNext()) {
  295. mHandler.post(listIterator.next());
  296. listIterator.remove();
  297. z = true;
  298. }
  299. return z;
  300. }
  301. public void onBackPressed() {
  302. moveTaskToBack(true);
  303. }
  304. public void onPause() {
  305. ProbePrinter probePrinter;
  306. EPLog.i(TAG, "onPause()");
  307. super.onPause();
  308. mHandler.removeMessages(0);
  309. mHandler.removeMessages(1);
  310. int i = printerLocation;
  311. if ((i == 1 || i == 3) && (probePrinter = task) != null) {
  312. probePrinter.cancelTask(true);
  313. task = null;
  314. }
  315. BleAsyncTask.blePrinterCheckStop();
  316. NfcTagUtils.disableForegroundDispatch(this);
  317. mActivityForeground = false;
  318. }
  319. protected void onStop() {
  320. super.onStop();
  321. }
  322. protected void onDestroy() {
  323. super.onDestroy();
  324. mPrinter.doReleaseDriver();
  325. }
  326. protected void onNewIntent(Intent intent) {
  327. NfcTagUtils.EpsonNfcConnectInfo parseNECTag;
  328. super.onNewIntent(intent);
  329. if ("android.nfc.action.NDEF_DISCOVERED".equals(intent.getAction()) && (parseNECTag = NfcTagUtils.parseNECTag(this, intent)) != null && NfcTagUtils.isNeedChangePrinter(this, printerId, parseNECTag)) {
  330. Intent intent2 = new Intent();
  331. intent2.setClass(this, ActivityNfcPrinter.class);
  332. intent2.putExtra(ActivityNfcPrinter.CONNECTINFO, parseNECTag);
  333. startActivity(intent2);
  334. }
  335. }
  336. private void updatePrinterInfo() {
  337. EPLog.d(TAG, "updatePrinterInfo");
  338. MyPrinter curPrinter = MyPrinter.getCurPrinter(this);
  339. if (curPrinter.getName() != null) {
  340. printerName.setText(curPrinter.getUserDefName(this));
  341. } else {
  342. printerName.setText(getString(R.string.printer_not_select));
  343. }
  344. printerId = curPrinter.getPrinterId();
  345. printerIp = curPrinter.getIp();
  346. printerLocation = curPrinter.getLocation();
  347. printerSerial = curPrinter.getSerialNo();
  348. deviceID = curPrinter.getName();
  349. EPLog.d(TAG, "" + printerId + ":" + printerIp + ":" + printerLocation + ":" + printerSerial + ":" + deviceID);
  350. updatePrinterIcon();
  351. updateMenu();
  352. if (!(printerLocation == 1 && WiFiDirectManager.getConnectInfo(getApplicationContext(), WiFiDirectManager.DEVICE_TYPE_PRINTER) == null) && (printerLocation != 3 || !Utils.isConnectedWifi(getApplicationContext()))) {
  353. EPLog.d(TAG, "########################");
  354. mHandler.sendEmptyMessage(1);
  355. return;
  356. }
  357. EPLog.d(TAG, "@@@@@@@@@@@@@@@@@@@@@@");
  358. mHandler.sendEmptyMessage(0);
  359. }
  360. private void updatePrinterIcon() {
  361. if (printerName.getText().equals(getString(R.string.printer_not_select))) {
  362. ((ImageView) findViewById(R.id.printer_icon)).setVisibility(View.GONE);
  363. return;
  364. }
  365. ((ImageView) findViewById(R.id.printer_icon)).setVisibility(View.VISIBLE);
  366. switch (printerLocation) {
  367. case 1:
  368. ((ImageView) findViewById(R.id.printer_icon)).setImageResource(R.drawable.print_local);
  369. return;
  370. case 2:
  371. ((ImageView) findViewById(R.id.printer_icon)).setImageResource(R.drawable.print_remote);
  372. return;
  373. case 3:
  374. ((ImageView) findViewById(R.id.printer_icon)).setImageResource(R.drawable.print_ip);
  375. return;
  376. default:
  377. return;
  378. }
  379. }
  380. private class ProbePrinter extends AsyncTask<Void, Void, Boolean> {
  381. private ProbePrinter() {
  382. }
  383. protected void onPreExecute() {
  384. EPLog.i(TAG, "ProbePrinter onPreExecute");
  385. printerStatus.setText("");
  386. }
  387. protected Boolean doInBackground(Void... voidArr) {
  388. EPLog.i(TAG, "ProbePrinter doInBackground");
  389. mPrinter.doInitDriver(this, 2);
  390. if (printerLocation == 1 || printerLocation == 3) {
  391. if (printerId != null) {
  392. int doProbePrinter = mPrinter.doProbePrinter(60, printerId, printerIp, printerLocation);
  393. while (doProbePrinter != 0) {
  394. try {
  395. if (isCancelled()) {
  396. break;
  397. }
  398. mHandler.sendEmptyMessage(2);
  399. Thread.sleep(10000);
  400. doProbePrinter = mPrinter.doProbePrinter(60, printerId, printerIp, printerLocation);
  401. } catch (InterruptedException e) {
  402. e.printStackTrace();
  403. return false;
  404. }
  405. }
  406. finishProbe = true;
  407. if (isCancelled()) {
  408. EPLog.i(TAG, "Cancelled ProbePrinter");
  409. return false;
  410. }
  411. int doSetPrinter = mPrinter.doSetPrinter();
  412. EPLog.i(TAG, "Set Printer result: " + doSetPrinter);
  413. if (doSetPrinter != 0) {
  414. mHandler.sendEmptyMessage(2);
  415. return false;
  416. }
  417. while (!isCancelled()) {
  418. try {
  419. int doGetStatus = mPrinter.doGetStatus();
  420. EPLog.i(TAG, "Printer Status result: " + doGetStatus);
  421. if (doGetStatus != 0) {
  422. mHandler.sendEmptyMessage(2);
  423. } else {
  424. int[] unused = mPrinterStatus = mPrinter.getMPrinterInfor().getMStatus();
  425. if (mPrinterStatus[0] != 0) {
  426. Message message = new Message();
  427. message.what = 3;
  428. Bundle bundle = new Bundle();
  429. bundle.putIntArray("STATUS_ERROR", mPrinterStatus);
  430. message.setData(bundle);
  431. mHandler.sendMessage(message);
  432. } else {
  433. mHandler.sendEmptyMessage(1);
  434. }
  435. }
  436. Thread.sleep(10000);
  437. } catch (InterruptedException e2) {
  438. EPLog.w("Background", "InterruptedException");
  439. e2.printStackTrace();
  440. }
  441. }
  442. EPLog.i(TAG, "task Cancelled");
  443. } else {
  444. int unused2 = printerLocation = 0;
  445. }
  446. }
  447. return true;
  448. }
  449. public boolean cancelTask(boolean z) {
  450. EPLog.i(TAG, "ProbePrinter cancelTask IN");
  451. mPrinter.doCancelFindPrinter();
  452. EPLog.i(TAG, "ProbePrinter cancelTask OUT");
  453. return cancel(z);
  454. }
  455. protected void onPostExecute(Boolean bool) {
  456. EPLog.i(TAG, "ProbePrinter onPostExecute");
  457. if (bool.booleanValue()) {
  458. mHandler.sendEmptyMessage(1);
  459. }
  460. }
  461. }
  462. private void updateMenu() {
  463. Display defaultDisplay = getWindowManager().getDefaultDisplay();
  464. Point point = new Point();
  465. defaultDisplay.getSize(point);
  466. int i = point.x;
  467. int i2 = point.y;
  468. ViewGroup.MarginLayoutParams marginLayoutParams = (ViewGroup.MarginLayoutParams) menulist.getLayoutParams();
  469. int i3 = ((i) * 0.1d);
  470. marginLayoutParams.setMargins(i3, ((i2) * 0.025d), i3, 0);
  471. menulist.setLayoutParams(marginLayoutParams);
  472. final IconTextArrayAdapter iconTextArrayAdapter = new IconTextArrayAdapter(this, R.layout.menu_item_btn, makeMenu(), menulist);
  473. menulist.setAdapter((ListAdapter) iconTextArrayAdapter);
  474. menulist.setRequestedColumnCount(3);
  475. menulist.setRequestedHorizontalSpacing(com.felipecsl.asymmetricgridview.library.Utils.dpToPx(this, 3.0f));
  476. menulist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
  477. public void onItemClick(AdapterView<?> adapterView, View view, int i, long j) {
  478. Intent intent = new Intent();
  479. IconTextArrayItem iconTextArrayItem = (IconTextArrayItem) iconTextArrayAdapter.getItem(i);
  480. if (iconTextArrayItem == null) {
  481. return;
  482. }
  483. if (!iconTextArrayItem.showMenu) {
  484. AlertDialog.Builder builder = new AlertDialog.Builder(this);
  485. builder.setTitle(iconTextArrayItem.menuId);
  486. if (printerLocation == 3) {
  487. builder.setMessage(R.string.CannotIPMes);
  488. } else if (printerLocation == 2) {
  489. builder.setMessage(R.string.CannotRemoteMes);
  490. } else {
  491. return;
  492. }
  493. builder.setPositiveButton(R.string.str_ok, new DialogInterface.OnClickListener() {
  494. public void onClick(DialogInterface dialogInterface, int i) {
  495. }
  496. });
  497. builder.show();
  498. } else if (getString(iconTextArrayItem.menuId).equalsIgnoreCase(getString(R.string.support_buy_ink))) {
  499. getBuyInkTask().execute(new Void[0]);
  500. Analytics.sendAction(getApplicationContext(), Analytics.ACTION_ID_HOME_BUY_INK);
  501. } else if (iconTextArrayItem.menuId == R.string.ready_ink_button_name) {
  502. Analytics.sendAction(getApplicationContext(), Analytics.ACTION_ID_HOME_READY_INK);
  503. openReadyInkPage();
  504. } else {
  505. if (getString(iconTextArrayItem.menuId).equalsIgnoreCase(getString(R.string.FunctionName_iPrint_MoreApps))) {
  506. intent.setAction("android.intent.action.VIEW");
  507. intent.setData(Uri.parse(MORE_APP_URL));
  508. mIprintHomeLogging.countupMoreApp(this);
  509. } else if (!iconTextArrayItem.ClassName.equalsIgnoreCase("")) {
  510. 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")) {
  511. intent.setClassName(iconTextArrayItem.PackageName, iconTextArrayItem.ClassName);
  512. mIprintHomeLogging.sendUiTapData(getApplicationContext(), iconTextArrayItem.ClassName);
  513. } else if (iconTextArrayItem.isInstall) {
  514. intent.setAction(iconTextArrayItem.ClassName);
  515. intent.setFlags(270532608);
  516. intent.putExtra(Constants.PRINTER_ID, printerId);
  517. intent.putExtra(Constants.PRINTER_IP, printerIp);
  518. intent.putExtra(Constants.PRINTER_NAME, deviceID);
  519. intent.putExtra("PRINTER_SERIAL", printerSerial);
  520. intent.putExtra("Function", iconTextArrayItem.key);
  521. intent.putExtra("PRINTER_SSID", WiFiDirectManager.getConnectInfo(getApplicationContext(), WiFiDirectManager.DEVICE_TYPE_PRINTER));
  522. mIprintHomeLogging.countUpInstalledOtherApps(this, iconTextArrayItem);
  523. } else {
  524. intent.setAction("android.intent.action.VIEW");
  525. intent.setData(Uri.parse(iconTextArrayItem.googleStoreUrl));
  526. mIprintHomeLogging.countUpNotInstalledOtherApps(this, iconTextArrayItem);
  527. }
  528. }
  529. try {
  530. startActivity(intent);
  531. } catch (ActivityNotFoundException unused) {
  532. Toast.makeText(this, R.string.upon_error, 0).show();
  533. }
  534. }
  535. }
  536. });
  537. }
  538. private List<IconTextArrayItem> makeMenu() {
  539. ArrayList arrayList = new ArrayList();
  540. MenudataAdapter menudataAdapter = new MenudataAdapter();
  541. menudataAdapter.setContext(getApplicationContext());
  542. menudataAdapter.parseJSONFile();
  543. String str = deviceID;
  544. if (str == null || str.length() < 4 || MyPrinter.PRINTER_USB.equals(printerIp)) {
  545. deviceID = "DEFAULT";
  546. }
  547. ArrayList<IconTextArrayItem> MenuListfordeviceID = menudataAdapter.MenuListfordeviceID(deviceID, printerLocation, this);
  548. int i = 0;
  549. if (!isJapaneseDevice()) {
  550. int i2 = 0;
  551. while (true) {
  552. if (i2 >= MenuListfordeviceID.size()) {
  553. break;
  554. } else if (MenuListfordeviceID.get(i2).appId.equalsIgnoreCase("CardPrint")) {
  555. MenuListfordeviceID.remove(i2);
  556. break;
  557. } else {
  558. i2++;
  559. }
  560. }
  561. }
  562. while (true) {
  563. if (i >= MenuListfordeviceID.size()) {
  564. break;
  565. }
  566. if (MenuListfordeviceID.get(i).appId.equalsIgnoreCase("Nenga")) {
  567. MyPrinter curPrinter = MyPrinter.getCurPrinter(this);
  568. if (curPrinter.getPrinterId() == null || curPrinter.getLang() != 1 || !isJapaneseDevice() || MyPrinter.PRINTER_USB.equals(printerIp)) {
  569. MenuListfordeviceID.remove(i);
  570. } else {
  571. try {
  572. if (201900000 > getPackageManager().getPackageInfo(MenuListfordeviceID.get(i).PackageName, 128).versionCode) {
  573. MenuListfordeviceID.remove(i);
  574. break;
  575. }
  576. } catch (PackageManager.NameNotFoundException e) {
  577. e.printStackTrace();
  578. }
  579. }
  580. }
  581. i++;
  582. }
  583. MenuListfordeviceID.remove(i);
  584. arrayList.addAll(MenuListfordeviceID);
  585. addBuyInkOrReadyInkToMenu(arrayList);
  586. return arrayList;
  587. }
  588. private void addBuyInkOrReadyInkToMenu(@NonNull List<IconTextArrayItem> list) {
  589. switch (getBuyInkReadyInkButtonType()) {
  590. case 1:
  591. addReadyInkToMenuEnd(list);
  592. return;
  593. case 2:
  594. addReadyInkToMenuEnd(list);
  595. return;
  596. default:
  597. return;
  598. }
  599. }
  600. private int getBuyInkReadyInkButtonType() {
  601. InkRplnInfoClient.InkRsInfo info = new InkRplnRepository(false).getInfo(this);
  602. if (info == null) {
  603. return 0;
  604. }
  605. return info.getButtonType();
  606. }
  607. private void addReadyInkToMenuEnd(@NonNull List<IconTextArrayItem> list) {
  608. list.add(new IconTextArrayItem(R.drawable.image_ready_ink, R.string.ready_ink_button_name, ""));
  609. }
  610. private void addBuyInkToMenu(@NonNull List<IconTextArrayItem> list) {
  611. IconTextArrayItem iconTextArrayItem;
  612. if (printerLocation == 0) {
  613. iconTextArrayItem = new IconTextArrayItem(R.drawable.image_buyink_disabled, R.string.support_buy_ink, "");
  614. iconTextArrayItem.showMenu = false;
  615. } else {
  616. iconTextArrayItem = new IconTextArrayItem(R.drawable.image_buyink, R.string.support_buy_ink, "");
  617. }
  618. list.add(1, iconTextArrayItem);
  619. }
  620. class BuyInkTask extends AsyncTask<Void, Void, Void> {
  621. BuyInkTask() {
  622. }
  623. protected void onPreExecute() {
  624. if (task != null) {
  625. task.cancelTask(true);
  626. task = null;
  627. }
  628. }
  629. protected Void doInBackground(Void... voidArr) {
  630. startActivity(new Intent("android.intent.action.VIEW", Uri.parse(BuyInkUrl.urlSupport(getApplicationContext(), CommonDefine.URL_INK))));
  631. return null;
  632. }
  633. }
  634. private BuyInkTask getBuyInkTask() {
  635. return new BuyInkTask();
  636. }
  637. private void openReadyInkPage() {
  638. startActivity(new Intent(this, JumpUrlProgressActivity.class));
  639. }
  640. /**
  641. * 是否是日本手机
  642. * @return
  643. */
  644. private boolean isJapaneseDevice() {
  645. return Locale.getDefault().getLanguage().equalsIgnoreCase(Locale.JAPAN.getLanguage()) || Locale.getDefault().getLanguage().equalsIgnoreCase(Locale.JAPANESE.getLanguage());
  646. }
  647. /**
  648. * 跳转到新手引导页
  649. */
  650. public void startGuideActivity() {
  651. InformationGuide informationGuide = new InformationGuide(getApplicationContext());
  652. Intent intent = new Intent(this, NoticeGuideActivity.class);
  653. intent.putExtra(NoticeGuideActivity.KEY_HTML_PATH, informationGuide.getHtmlPath());
  654. intent.putExtra(NoticeGuideActivity.KEY_GUIDE_VER, InformationGuide.GUIDE_VER);
  655. intent.putExtra(NoticeGuideActivity.KEY_BOOT_MODE, NoticeGuideActivity.MODE_AUTO);
  656. startActivityForResult(intent, 3);
  657. }
  658. }