我已經在Play商店中上傳了一個應用程序,並且我收到了幾條評論,指出它有病毒,它有時會強制手機重新啓動。我的應用程序中的代碼非常簡單:只有一個活動有幾個位置,您可以聽到它們或將它們設置爲鈴聲。你能告訴我什麼嗎?我的Android應用程序被報告有病毒
我的應用程序的代碼:
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" />
它的工作原理沒有互聯網,但我只是在谷歌的直接鏈接到我的開發者頁面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;
}
有趣......不知道爲什麼他們說這是病毒..你需要什麼權限? – 2012-07-15 08:18:44
編輯答案:互聯網連接(但它沒有互聯網工作)和寫入SD的權限,以便首先保存文件。 – ghostrider 2012-07-15 08:35:30
如果你不需要互聯網,你爲什麼要求互聯網?或者你真的需要互聯網嗎?也許你應該提供應用程序反饋,並促進與你的直接溝通,以及促進對你的應用程序進行評分。當他們的手機重新啓動時,人們可能會覺得不會隨機喊出'病毒',並且認爲如果您的應用程序具有更簡單的通信方式,那麼您的應用程序就會受到指責。此外,我的應用程序的許多改進來自於更容易地向我們發送電子郵件。我強烈建議儘可能與用戶交談。 – 2012-07-17 19:51:16