gpt4 book ai didi

android - 我的 Android 应用程序被报告有病毒

转载 作者:太空宇宙 更新时间:2023-11-03 10:26:34 25 4
gpt4 key购买 nike

我已经在 Play 商店上传了一个应用程序,我收到了几条评论说它有病毒,它有时会强制手机自行重启。我的应用程序中的代码非常简单:只有一个 Activity 有多个点,您可以听到它们或将它们设置为铃声。你能给我一些建议吗?

我的应用代码:

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 play 商店中的开发者页面,为了避免崩溃,我使用了这个功能:

(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 启动您的下一个版本(或其他类似库)安装以帮助您追踪崩溃。

关于android - 我的 Android 应用程序被报告有病毒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11490400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com