据报道,我的Android应用程序有病毒
我在Play store中上传了一个应用程序,我收到了一些评论,说里面有病毒,有时会迫使手机重新启动。我的应用程序中的代码非常简单:只有一个活动有几个点,你可以听到它们或将它们设置为铃声。你能给我提些建议吗 我的应用程序代码:据报道,我的Android应用程序有病毒,android,Android,我在Play store中上传了一个应用程序,我收到了一些评论,说里面有病毒,有时会迫使手机重新启动。我的应用程序中的代码非常简单:只有一个活动有几个点,你可以听到它们或将它们设置为铃声。你能给我提些建议吗 我的应用程序代码: b1_2.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { if(saveas(soundid,save_name)){ Toast.make
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" />
首先,你的Android应用程序“有病毒”的概念是愚蠢的。如果你的应用程序中有恶意代码,那是因为你开发的应用程序中有恶意代码 更可能发生的是,你的应用程序中有一个BUG。更糟糕的是,您的用户正在使用的Android SDK中也有一个bug(因为操作系统正在崩溃,这永远不会发生)。如果不仔细阅读和分析所有代码,这里的任何人都很难直接回答代码和/或Android SDK中的错误 我建议找出这个bug遇到的设备和SDK版本,然后开始在这些设备/SDK上测试应用程序。由于您认为该错误可能与internet连接有关,请在启用internet连接、禁用internet连接和弱连接的情况下测试应用程序。请记住,您可能在以前的Android SDK中遇到已知错误
您还可以在安装了(或其他类似库)的情况下启动下一个版本,以帮助您跟踪崩溃情况。。。不知道他们为什么说这是病毒。。您需要什么权限?回答:已编辑:Internet连接(但它在没有Internet的情况下工作)和写入SD的权限,以便首先保存文件。如果不需要Internet,为什么要请求Internet?或者你真的需要互联网?也许你应该提供应用内反馈,促进与你的直接沟通,以及提升你的应用评级。当手机重新启动时,人们可能会觉得不太倾向于随意喊“病毒”,并且认为如果他们有一个更简单的通信途径,你的应用程序应该受到责备。此外,我的应用程序的许多改进来自于更容易给我们发送电子邮件。我强烈建议您尽可能多地与用户交谈。如果某个应用程序导致手机重新启动,则故障在于手机,而不是应用程序。应用程序当然会有糟糕的用户体验,但手机不应该让他们重新启动,即使是有意的。手机上没有sdk(除非你在手机上构建应用程序)。你可能指的是平台。SDK版本我指的是操作系统版本。
(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;
}