Я не мог заставить ничего для меня работать, но это:
adb shell
run-as package.name
cat /databases/databaseFileName.db > /sdcard/copiedDatabaseFileName.db
exit
exit
adb pull /sdcard/copiedDatabaseFileName.db /file/location/on/computer/
. Первый выход - выйти из режима run-as, второй выход - выйти из оболочки adb сделать тягу.
Вы не можете изменить длину массива. когда вы создаете массив типа int [] fixedLEngthArray = new int [n], вы в основном зарезервировали память для n int. если вам нужно n + 1, вам нужно будет создать новый массив, в который скопировать старый и вставить / удалить элемент.
Думаю, вы написали addInt
что-то вроде этого:
void addInt(int[] a, int n){
int[] newArray = new int[a.length+1];
System.arraycopy(a, 0, newArray, 0, a.length);
newArray[a.length] = n;
a = newArray; // WRONG!
}
Параметры метода в Java передаются значением , что в основном означает, что a
в addInt
и [ 116] в вызове addInt(a1, 2)
две отдельные переменные. При входе в addInt
, a
первоначально относится к тому же массиву, что и a1
, но кроме этого нет дальнейших отношений между a
и a1
, и впоследствии изменение a
для ссылки на что-то еще не имеет эффект на a1
.
Ваша единственная возможность - изменить addInt
так, чтобы он возвращал новый массив как результат функции:
int[] addInt(int[] a, int n){
int[] newArray = new int[a.length+1];
System.arraycopy(a, 0, newArray, 0, a.length);
newArray[a.length] = n;
return newArray;
}
, а затем вызывать его так:
a1 = addInt(a1, 2);