ActivityConnectP2P.java 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513
  1. package com.epson.mobilephone.common.wifidirect;
  2. import android.app.AlertDialog;
  3. import android.content.BroadcastReceiver;
  4. import android.content.Context;
  5. import android.content.DialogInterface;
  6. import android.content.Intent;
  7. import android.content.IntentFilter;
  8. import android.net.wifi.p2p.WifiP2pConfig;
  9. import android.net.wifi.p2p.WifiP2pDevice;
  10. import android.net.wifi.p2p.WifiP2pGroup;
  11. import android.net.wifi.p2p.WifiP2pManager;
  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.widget.Toast;
  18. import androidx.annotation.Nullable;
  19. import androidx.fragment.app.FragmentActivity;
  20. import androidx.lifecycle.Observer;
  21. import java.util.Deque;
  22. public class ActivityConnectP2P extends ActivityConnectBase implements DialogProgressWiFiDirect.DialogButtonClick {
  23. private static final int DELAY_P2P_CONNECT = 1000;
  24. private static final String IDD_WIFI_ERROR = "idd_wifi_error";
  25. private static final String IDD_WIFI_WAITING = "idd_wifi_waiting";
  26. private static final int ID_CHECK_WIIFISTATE = 11;
  27. private static final int ID_CONNECTED_WIFI = 10;
  28. private static final int ID_CONNECT_P2P = 12;
  29. private static final int ID_FOUND = 1;
  30. private static final int ID_NOT_FOUND = 2;
  31. private static final int ID_RESULT = 0;
  32. private static final int MAX_P2P_CONNECT = 5;
  33. private static final String TAG = "ActivityConnectP2P";
  34. Handler mHandler = new Handler() {
  35. public void handleMessage(Message message) {
  36. super.handleMessage(message);
  37. switch (C10835.f149x55760faf[status.ordinal()]) {
  38. case 1:
  39. break;
  40. case 2:
  41. switch (message.what) {
  42. case 1:
  43. Bundle data = message.getData();
  44. if (data != null) {
  45. String string = data.getString("name");
  46. String string2 = data.getString(escprLib.PRINTER_IP);
  47. String string3 = data.getString("id");
  48. if (string != null && string2 != null && string3 != null) {
  49. EPLog.i(ActivityConnectP2P.TAG, "epsWrapperFindPrinter Success" + string);
  50. if (!expectedPrtMacAddr.equals(MacAddrUtils.getMacAddressFromPrinterId(string3))) {
  51. EPLog.i(ActivityConnectP2P.TAG, "This Printer is not expected " + string);
  52. return;
  53. }
  54. interruptFindingPrinter();
  55. Intent intent = new Intent();
  56. intent.putExtras(data);
  57. onConnectedPrinter(intent);
  58. return;
  59. }
  60. return;
  61. }
  62. return;
  63. case 2:
  64. onError();
  65. return;
  66. default:
  67. return;
  68. }
  69. case 3:
  70. if (message.what == 11) {
  71. if (!ActivityConnectP2P.mWifiManager.isWifiEnabled()) {
  72. startActivityForResult(new Intent(ActivityConnectP2P.this, ActivityControlWiFi.class), 1);
  73. return;
  74. }
  75. onEnabledWifi();
  76. return;
  77. }
  78. return;
  79. case 4:
  80. if (message.what == 0) {
  81. Bundle data2 = message.getData();
  82. if (data2 != null && !data2.isEmpty()) {
  83. if (targetSsid.equals(WiFiControl.removeSSIDPrefix(data2.getString("ssid")))) {
  84. WifiP2pConfig unused = p2pConnectConfig = new WifiP2pConfig();
  85. p2pConnectConfig.deviceAddress = data2.getString(SearchWiFiDirectPrinterTask.MACADDR_P2P);
  86. p2pConnectConfig.groupOwnerIntent = -1;
  87. p2pConnectConfig.wps.setup = 0;
  88. status = ActivityConnectBase.Status.WIFI_CONNECTING;
  89. setupObserver();
  90. ActivityConnectP2P.mHandler.sendEmptyMessage(12);
  91. break;
  92. }
  93. } else {
  94. EPLog.e(ActivityConnectP2P.TAG, "Not Found Network");
  95. status = ActivityConnectBase.Status.IDLE;
  96. onError();
  97. break;
  98. }
  99. }
  100. break;
  101. default:
  102. return;
  103. }
  104. int i = message.what;
  105. if (i == 10) {
  106. status = ActivityConnectBase.Status.WIFI_CONNECTED;
  107. onConnectedWiFi();
  108. } else if (i == 12) {
  109. EPLog.d(ActivityConnectP2P.TAG, "connect() " + targetSsid);
  110. ActivityConnectP2P.mWiFiP2PManager.connect(p2pChannnel, p2pConnectConfig, new WifiP2pManager.ActionListener() {
  111. public void onSuccess() {
  112. EPLog.d(ActivityConnectP2P.TAG, "P2PConnect_Operation Success");
  113. }
  114. public void onFailure(int i) {
  115. if (i == 0) {
  116. EPLog.w(ActivityConnectP2P.TAG, "P2PConnect_Operation Error " + i);
  117. if (searchWiFiDirectPrinter == null) {
  118. onError();
  119. } else if (p2pRetryCount < 5) {
  120. searchWiFiDirectPrinter.interrupt();
  121. interruptConnecting();
  122. onActivityResult(2, -1, (Intent) null);
  123. ActivityConnectP2P.access$408(ActivityConnectP2P.this);
  124. } else {
  125. onError();
  126. }
  127. } else if (i != 2) {
  128. EPLog.w(ActivityConnectP2P.TAG, "P2PConnect_Operation Fail " + i);
  129. onError();
  130. } else {
  131. EPLog.w(ActivityConnectP2P.TAG, "P2PConnect_Operation BUSY");
  132. ActivityConnectP2P.mHandler.sendEmptyMessageDelayed(12, 1000);
  133. }
  134. }
  135. });
  136. }
  137. }
  138. };
  139. private DialogProgressWiFiDirectViewModel mModelDialog;
  140. WifiP2pManager mWiFiP2PManager = null;
  141. WifiP2pManager.Channel p2pChannnel = null;
  142. private WifiP2pConfig p2pConnectConfig = null;
  143. private int p2pRetryCount = 0;
  144. WiFiDirectBroadcastReceiver p2pStateChangeReciever = null;
  145. public void onCancelDialog(String str) {
  146. }
  147. public void onNegativeClick(String str) {
  148. }
  149. public void onNeutralClick(String str) {
  150. }
  151. static /* synthetic */ int access$408(ActivityConnectP2P activityConnectP2P) {
  152. int i = activityConnectP2P.p2pRetryCount;
  153. activityConnectP2P.p2pRetryCount = i + 1;
  154. return i;
  155. }
  156. protected void onCreate(Bundle bundle) {
  157. super.onCreate(bundle);
  158. mModelDialog = (DialogProgressWiFiDirectViewModel) ViewModelProviders.m2of((FragmentActivity) this).get(DialogProgressWiFiDirectViewModel.class);
  159. mModelDialog.getDialogJob().observe(this, new Observer<Deque<String[]>>() {
  160. public void onChanged(@Nullable Deque<String[]> deque) {
  161. String[] checkQueue = ActivityConnectP2P.mModelDialog.checkQueue();
  162. if (checkQueue != null) {
  163. String str = checkQueue[0];
  164. String str2 = checkQueue[1];
  165. if (str2.equals("do_show")) {
  166. showDialog(str);
  167. }
  168. if (str2.equals("do_dismiss")) {
  169. dismissDialog(str);
  170. }
  171. }
  172. }
  173. });
  174. mModelDialog.doShow(IDD_WIFI_WAITING);
  175. mWiFiP2PManager = (WifiP2pManager) getSystemService("wifip2p");
  176. WifiP2pManager wifiP2pManager = mWiFiP2PManager;
  177. if (wifiP2pManager != null) {
  178. p2pChannnel = wifiP2pManager.initialize(this, getMainLooper(), (WifiP2pManager.ChannelListener) null);
  179. }
  180. if (mWiFiP2PManager == null || p2pChannnel == null) {
  181. onError();
  182. return;
  183. }
  184. Bundle extras = getIntent().getExtras();
  185. if (extras != null) {
  186. targetSsid = extras.getString(ActivityConnectBase.APNAME);
  187. showErrorDlg = extras.getBoolean(ActivityConnectBase.SHOWERROR, false);
  188. showConnectedTip = extras.getBoolean(ActivityConnectBase.SHOWTIP, true);
  189. needInfo = extras.getBoolean(ActivityConnectBase.NEEDINFO, false);
  190. timeout = extras.getInt(ActivityConnectBase.TIMEOUT, 30);
  191. }
  192. EPLog.i(TAG, "Starting connect :" + targetSsid + " timeout = " + timeout);
  193. if (Build.VERSION.SDK_INT >= 29) {
  194. ActivityRequestLocationPermission.requestLocationPermissionForce(this, 2);
  195. } else {
  196. mHandler.sendEmptyMessage(11);
  197. }
  198. }
  199. protected void onActivityResult(int i, int i2, Intent intent) {
  200. super.onActivityResult(i, i2, intent);
  201. if (i != 2) {
  202. if (i == 5) {
  203. onEnabledWifi();
  204. }
  205. } else if (i2 != -1) {
  206. closeWaitingDialog();
  207. setResult(0);
  208. setLastDetailResult(1);
  209. finish();
  210. } else {
  211. mHandler.sendEmptyMessage(11);
  212. }
  213. }
  214. protected void onEnabledWifi() {
  215. WiFiUtils instance = WiFiUtils.getInstance(this);
  216. String curSSID = instance.getCurSSID();
  217. if (!WiFiControl.isSimpleAP(curSSID) || instance.invalidateSimpleAP(this, instance.getCurNetworkId())) {
  218. WifiP2pUtils.ConnectionInfo connectionInfo = WifiP2pUtils.getInstance(this).getConnectionInfo();
  219. if (connectionInfo != null) {
  220. if (targetSsid.equals(connectionInfo.printerName)) {
  221. EPLog.d(TAG, "Already Connected!!");
  222. status = ActivityConnectBase.Status.WIFI_CONNECTING;
  223. mHandler.sendEmptyMessage(10);
  224. return;
  225. }
  226. WifiP2pUtils.getInstance(this).disconnect();
  227. }
  228. if (searchWiFiDirectPrinter.start(2, mHandler, 0, timeout)) {
  229. onError();
  230. } else {
  231. status = ActivityConnectBase.Status.WIFI_SCANNING;
  232. }
  233. } else {
  234. AlertDialog.Builder negativeButton = new AlertDialog.Builder(this).setTitle(R.string.str_error_wifi_connecting_failed).setPositiveButton(getString(R.string.str_goto_wifi_setting), new DialogInterface.OnClickListener() {
  235. public void onClick(DialogInterface dialogInterface, int i) {
  236. EPLog.d(ActivityConnectP2P.TAG, "finish():GOTO_WIFI_SETTINGS");
  237. WiFiUtils.showOsWifiSettings(ActivityConnectP2P.this, 5);
  238. }
  239. }).setNegativeButton(getString(R.string.str_cancel), new DialogInterface.OnClickListener() {
  240. public void onClick(DialogInterface dialogInterface, int i) {
  241. EPLog.d(ActivityConnectP2P.TAG, "finish():RESULT_CANCELED");
  242. onError();
  243. ActivityConnectBase.setLastDetailResult(1);
  244. }
  245. });
  246. negativeButton.setMessage(getString(R.string.str_notice_delete_simpleAP) + "\n\nSSID: " + curSSID).setCancelable(false).show();
  247. }
  248. }
  249. /* access modifiers changed from: private */
  250. /* JADX WARNING: Removed duplicated region for block: B:12:0x0028 */
  251. /* JADX WARNING: Removed duplicated region for block: B:13:0x002a */
  252. /* JADX WARNING: Removed duplicated region for block: B:14:0x0041 */
  253. /* JADX WARNING: Removed duplicated region for block: B:16:0x0058 */
  254. /* JADX WARNING: Removed duplicated region for block: B:18:? A[RETURN, SYNTHETIC] */
  255. /* Code decompiled incorrectly, please refer to instructions dump. */
  256. public void showDialog(java.lang.String r11) {
  257. /*
  258. r10 = this;
  259. int r0 = r11.hashCode()
  260. r1 = -174410503(0xfffffffff59ab4f9, float:-3.9222865E32)
  261. r2 = 0
  262. if (r0 == r1) goto L_0x001a
  263. r1 = 765832116(0x2da5abb4, float:1.883458E-11)
  264. if (r0 == r1) goto L_0x0010
  265. goto L_0x0024
  266. L_0x0010:
  267. java.lang.String r0 = "idd_wifi_error"
  268. boolean r0 = r11.equals(r0)
  269. if (r0 == 0) goto L_0x0024
  270. r0 = 1
  271. goto L_0x0025
  272. L_0x001a:
  273. java.lang.String r0 = "idd_wifi_waiting"
  274. boolean r0 = r11.equals(r0)
  275. if (r0 == 0) goto L_0x0024
  276. r0 = 0
  277. goto L_0x0025
  278. L_0x0024:
  279. r0 = -1
  280. L_0x0025:
  281. switch(r0) {
  282. case 0: goto L_0x0041;
  283. case 1: goto L_0x002a;
  284. default: goto L_0x0028;
  285. }
  286. L_0x0028:
  287. r0 = 0
  288. goto L_0x0056
  289. L_0x002a:
  290. r4 = 2
  291. int r0 = com.epson.mobilephone.common.wifidirect.R.string.str_error_connecting_printer_p2p
  292. java.lang.String r5 = r10.getString(r0)
  293. r6 = 0
  294. r0 = 17039370(0x104000a, float:2.42446E-38)
  295. java.lang.String r7 = r10.getString(r0)
  296. r8 = 0
  297. r9 = 0
  298. r3 = r11
  299. com.epson.mobilephone.common.wifidirect.DialogProgressWiFiDirect r0 = com.epson.mobilephone.common.wifidirect.DialogProgressWiFiDirect.newInstance(r3, r4, r5, r6, r7, r8, r9)
  300. goto L_0x0056
  301. L_0x0041:
  302. r4 = 0
  303. int r0 = com.epson.mobilephone.common.wifidirect.R.string.str_connecting_printer_p2p
  304. java.lang.String r5 = r10.getString(r0)
  305. r6 = 0
  306. int r0 = com.epson.mobilephone.common.wifidirect.R.string.str_cancel
  307. java.lang.String r7 = r10.getString(r0)
  308. r8 = 0
  309. r9 = 0
  310. r3 = r11
  311. com.epson.mobilephone.common.wifidirect.DialogProgressWiFiDirect r0 = com.epson.mobilephone.common.wifidirect.DialogProgressWiFiDirect.newInstance(r3, r4, r5, r6, r7, r8, r9)
  312. L_0x0056:
  313. if (r0 == 0) goto L_0x0062
  314. r0.setCancelable(r2)
  315. android.support.v4.app.FragmentManager r1 = r10.getSupportFragmentManager()
  316. r0.show(r1, r11)
  317. L_0x0062:
  318. return
  319. */
  320. throw new UnsupportedOperationException("Method not decompiled: com.epson.mobilephone.common.wifidirect.ActivityConnectP2P.showDialog(java.lang.String):void");
  321. }
  322. private void dismissDialog(String str) {
  323. DialogFragment dialogFragment = (DialogFragment) getSupportFragmentManager().findFragmentByTag(str);
  324. if (dialogFragment != null) {
  325. dialogFragment.dismiss();
  326. }
  327. }
  328. protected void interruptConnecting() {
  329. super.interruptConnecting();
  330. WiFiDirectBroadcastReceiver wiFiDirectBroadcastReceiver = p2pStateChangeReciever;
  331. if (wiFiDirectBroadcastReceiver != null) {
  332. try {
  333. unregisterReceiver(wiFiDirectBroadcastReceiver);
  334. } catch (IllegalArgumentException e) {
  335. e.printStackTrace();
  336. }
  337. p2pStateChangeReciever = null;
  338. }
  339. }
  340. private void onConnectedWiFi() {
  341. EPLog.d(TAG, "onConnect()");
  342. interruptConnecting();
  343. ManageDefaultNetwork.getInstance(this).resetDefaultNetwork();
  344. if (showConnectedTip) {
  345. Toast.makeText(this, getString(R.string.str_notice_wifi_connected), 0).show();
  346. }
  347. if (needInfo) {
  348. closeWaitingDialog();
  349. status = ActivityConnectBase.Status.IDLE;
  350. setResult(-1);
  351. setLastDetailResult(-1);
  352. finish();
  353. return;
  354. }
  355. if (taskFindPrinter != null) {
  356. EPLog.w(TAG, "Already called onConnect()");
  357. }
  358. WifiP2pUtils.ConnectionInfo connectionInfo = WifiP2pUtils.getInstance(this).getConnectionInfo();
  359. if (connectionInfo.isGroupOwnerThisDevice) {
  360. expectedPrtMacAddr = WiFiControl.p2pAddr2PtrAddr(connectionInfo.p2PMacAdder, targetSsid);
  361. } else {
  362. expectedPrtMacAddr = WiFiControl.p2pAddr2PtrAddrP2P(connectionInfo.p2PMacAdder, targetSsid);
  363. }
  364. status = ActivityConnectBase.Status.PRINTER_FINDING;
  365. taskFindPrinter = new FindPrinterTask(mHandler, timeout, 1, 2);
  366. taskFindPrinter.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, new Void[0]);
  367. }
  368. private void onError() {
  369. closeWaitingDialog();
  370. Toast.makeText(this, getString(R.string.str_error_connecting_printer_short), 1).show();
  371. if (searchWiFiDirectPrinter != null) {
  372. searchWiFiDirectPrinter.interrupt();
  373. searchWiFiDirectPrinter = null;
  374. }
  375. switch (status) {
  376. case WIFI_CONNECTING:
  377. if (p2pConnectConfig != null) {
  378. interruptConnecting();
  379. if (mWiFiP2PManager != null) {
  380. EPLog.d(TAG, "cancelConnect() " + targetSsid);
  381. mWiFiP2PManager.cancelConnect(p2pChannnel, (WifiP2pManager.ActionListener) null);
  382. p2pConnectConfig = null;
  383. break;
  384. }
  385. }
  386. break;
  387. case PRINTER_FINDING:
  388. if (taskFindPrinter != null) {
  389. taskFindPrinter.cancel();
  390. taskFindPrinter = null;
  391. break;
  392. }
  393. break;
  394. }
  395. if (showErrorDlg) {
  396. mModelDialog.doShow(IDD_WIFI_ERROR);
  397. return;
  398. }
  399. EPLog.d(TAG, "finish():RESULT_CANCELED");
  400. setResult(0);
  401. setLastDetailResult(2);
  402. finish();
  403. }
  404. private void closeWaitingDialog() {
  405. EPLog.d(TAG, "Called closeWaitingDialog()");
  406. try {
  407. mModelDialog.doDismiss(IDD_WIFI_WAITING);
  408. } catch (IllegalArgumentException unused) {
  409. EPLog.d(TAG, "IDD_WIFI_WAITING already closed");
  410. }
  411. }
  412. private void setupObserver() {
  413. super.setupObserver();
  414. p2pStateChangeReciever = new WiFiDirectBroadcastReceiver();
  415. registerReceiver(p2pStateChangeReciever, new IntentFilter("android.net.wifi.p2p.CONNECTION_STATE_CHANGE"));
  416. }
  417. /* JADX WARNING: Removed duplicated region for block: B:12:0x0029 */
  418. /* JADX WARNING: Removed duplicated region for block: B:13:0x003b */
  419. /* JADX WARNING: Removed duplicated region for block: B:16:? A[RETURN, SYNTHETIC] */
  420. /* Code decompiled incorrectly, please refer to instructions dump. */
  421. public void onPositiveClick(java.lang.String r4) {
  422. /*
  423. r3 = this;
  424. int r0 = r4.hashCode()
  425. r1 = -174410503(0xfffffffff59ab4f9, float:-3.9222865E32)
  426. r2 = 0
  427. if (r0 == r1) goto L_0x001a
  428. r1 = 765832116(0x2da5abb4, float:1.883458E-11)
  429. if (r0 == r1) goto L_0x0010
  430. goto L_0x0024
  431. L_0x0010:
  432. java.lang.String r0 = "idd_wifi_error"
  433. boolean r4 = r4.equals(r0)
  434. if (r4 == 0) goto L_0x0024
  435. r4 = 1
  436. goto L_0x0025
  437. L_0x001a:
  438. java.lang.String r0 = "idd_wifi_waiting"
  439. boolean r4 = r4.equals(r0)
  440. if (r4 == 0) goto L_0x0024
  441. r4 = 0
  442. goto L_0x0025
  443. L_0x0024:
  444. r4 = -1
  445. L_0x0025:
  446. switch(r4) {
  447. case 0: goto L_0x003b;
  448. case 1: goto L_0x0029;
  449. default: goto L_0x0028;
  450. }
  451. L_0x0028:
  452. goto L_0x0040
  453. L_0x0029:
  454. java.lang.String r4 = "ActivityConnectP2P"
  455. java.lang.String r0 = "finish():RESULT_CANCELED"
  456. com.epson.mobilephone.common.wifidirect.EPLog.m86d(r4, r0)
  457. r3.setResult(r2)
  458. r4 = 2
  459. setLastDetailResult(r4)
  460. r3.finish()
  461. goto L_0x0040
  462. L_0x003b:
  463. r3.showErrorDlg = r2
  464. r3.onError()
  465. L_0x0040:
  466. return
  467. */
  468. throw new UnsupportedOperationException("Method not decompiled: com.epson.mobilephone.common.wifidirect.ActivityConnectP2P.onPositiveClick(java.lang.String):void");
  469. }
  470. class WiFiDirectBroadcastReceiver extends BroadcastReceiver {
  471. WiFiDirectBroadcastReceiver() {
  472. }
  473. public void onReceive(Context context, Intent intent) {
  474. String action = intent.getAction();
  475. EPLog.d(ActivityConnectP2P.TAG, "WiFiDirectBroadcastReceiver:onReceive() action = " + action);
  476. if (action.equals("android.net.wifi.p2p.CONNECTION_STATE_CHANGE")) {
  477. WifiP2pGroup wifiP2pGroup = (WifiP2pGroup) intent.getParcelableExtra("p2pGroupInfo");
  478. WifiP2pDevice p2PPrinterInfo = WifiP2pUtils.getInstance(context).getP2PPrinterInfo(wifiP2pGroup);
  479. EPLog.d(ActivityConnectP2P.TAG, "EXTRA_WIFI_P2P_GROUP = " + wifiP2pGroup);
  480. if (p2PPrinterInfo != null && p2pConnectConfig.deviceAddress.equals(p2PPrinterInfo.deviceAddress)) {
  481. EPLog.d(ActivityConnectP2P.TAG, "P2P Established " + p2PPrinterInfo.deviceName);
  482. if (searchWiFiDirectPrinter != null) {
  483. searchWiFiDirectPrinter.interrupt();
  484. searchWiFiDirectPrinter = null;
  485. }
  486. ActivityConnectP2P.mHandler.sendEmptyMessage(10);
  487. }
  488. }
  489. }
  490. }
  491. }