Сообщается, что у моего Android-приложения есть вирус

Я загрузил приложение в Play Store, и я получил несколько комментариев о том, что у него есть вирус, и он иногда заставляет мобильную станцию ​​перезагружаться. Код в моем приложении настолько прост: только одно действие, которое имеет несколько точек, и вы можете услышать их или установить в качестве мелодии звонка. Вы можете мне что-нибудь предложить?

Код моего приложения:

b1_2.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { if(saveas(soundid,save_name)){ Toast.makeText(Main.this, "The sound was set as ringtone!", Toast.LENGTH_LONG).show(); }; } }); public boolean saveas(int ressound,String filename){ byte[] buffer=null; InputStream fIn = getBaseContext().getResources().openRawResource(ressound); int size=0; try { size = fIn.available(); buffer = new byte[size]; fIn.read(buffer); fIn.close(); } catch (IOException e) { // TODO Auto-generated catch block return false; } String path="/sdcard/media/ringtones/"; boolean exists = (new File(path)).exists(); if (!exists){new File(path).mkdirs();} FileOutputStream save; try { save = new FileOutputStream(path+filename); save.write(buffer); save.flush(); save.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block return false; } catch (IOException e) { // TODO Auto-generated catch block return false; } sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://"+path+filename))); File k = new File(path, filename); ContentValues values = new ContentValues(); values.put(MediaStore.MediaColumns.DATA, k.getAbsolutePath()); values.put(MediaStore.MediaColumns.TITLE, "clip_"+save_name); values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3"); values.put(MediaStore.Audio.Media.ARTIST, "clip"); values.put(MediaStore.Audio.Media.IS_RINGTONE, true); values.put(MediaStore.Audio.Media.IS_NOTIFICATION, true); values.put(MediaStore.Audio.Media.IS_ALARM, true); values.put(MediaStore.Audio.Media.IS_MUSIC, true); //Insert it into the database Uri uri = MediaStore.Audio.Media.getContentUriForPath(k.getAbsolutePath()); getContentResolver().delete(uri, MediaStore.MediaColumns.DATA + "=\"" + k.getAbsolutePath() + "\"", null); Uri newUri= this.getContentResolver().insert(uri, values); RingtoneManager.setActualDefaultRingtoneUri( this, RingtoneManager.TYPE_RINGTONE, newUri); return true; } 

Необходимые разрешения:

  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_SETTINGS"></uses-permission> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

Он работает без Интернета, но у меня есть прямая ссылка на мою страницу разработчиков в игровом магазине google, и во избежание сбоев я использовал эту функцию:

 (if link is pressed) if (isOnline()){ open page } else { do nothing } public boolean isOnline() { boolean connectedWifi = false; boolean connectedMobile = false; ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo[] networks = cm.getAllNetworkInfo(); for (NetworkInfo ni : networks) { if ("WIFI".equalsIgnoreCase(ni.getTypeName())) if (ni.isConnected()) connectedWifi = true; if ("MOBILE".equalsIgnoreCase(ni.getTypeName())) if (ni.isConnected()) connectedMobile = true; } return connectedWifi || connectedMobile; } 

Прежде всего, идея, что ваше Android-приложение «имеет вирус», глупо. Если в вашем приложении есть вредоносный код , то это потому, что вы разработали свое приложение с вредоносным кодом.

Что более чем вероятно происходит здесь, так это то, что ваше приложение имеет BUG в нем. Хуже того, Android SDK, который использует ваш пользователь (ы), также имеет ошибку в нем (потому что ОС сбой, и этого никогда не должно произойти). Не пропуская и не анализируя весь ваш код, для любого, кто здесь будет, трудно будет дать вам прямой ответ о том, где ошибка в вашем коде и / или Android SDK.

Я бы посоветовал выяснить, какие устройства и версии SDK испытывают эту ошибку, и затем я начну тестировать приложение на этих устройствах / SDK. Поскольку вы считаете, что ошибка связана с подключением к Интернету, проверьте приложение с включенным подключением к Интернету, отключенным и слабым соединением. Имейте в виду, что вы можете столкнуться с известной ошибкой в ​​предыдущем Android SDK.

Вы также можете запустить свою следующую версию с помощью Crittercism (или другой подобной библиотеки), которая поможет вам отслеживать сбои .