Вы должны добавить свой Android-файл sdk в свой сценарий оболочки bash_profile.
Открыть или создать «.bash_profile» в вашем корневом каталоге учетной записи. И вставьте свой путь sdk в android в файл «bash_profile».
, как это
PATH=$PATH:HOME/bin:/usr/app/mysql/bin:/Users/your_account_name/Library/Android/sdk/platform-tools:/Users/your_account_name/Library/Android/sdk/build-tools/25.0.2
После ввода пути сохраните файл и снова откройте приложение с командной строкой. Если вы исправите добавление этого пути, вы можете вызывать / называть команду «adb» повсюду.
Удачи!
Я слышал, что вы используете ОС Windows для работы dev.
Итак, похоже, что вы набрали команду adb в «adb shell» для Android-устройства. ОС Android основано на Linux. Команда «adb shell» - это способ входа в среду терминала os для Android. В этой среде вы не можете использовать команду adb. Из-за «adb» есть «Android Debug Bridge». мост означает, что команда «adb» помогает подключить рабочую среду к os. Итак, после типа «adb shell» вы находитесь в OS устройства Android, и вы не можете использовать команду «adb».
это мой случай.
User-MacBook-Pro:~ user$ adb shell
shell@hammerhead:/ $ adb
/system/bin/sh: adb: not found
127|shell@hammerhead:/ $ exit
User-MacBook-Pro:~ User$
BR
Хорошо, я сделал это.
Вместо повторной проверки карты приложение выполняет итерацию через все плейлисты в медиастаре и проверяет длину поля _data. Я обнаружил, что для всех списков без связанного файла M3U это поле всегда было пустым. Тогда это был всего лишь случай поиска исходного кода для оригинального приложения для Android-андроида, поиска метода удаления и использования этого для удаления любых плейлистов с длиной 0. Я переименовал приложение PlaylistPurge (так как он не «повторно сканирует» ') и я отправляю код ниже.
Я, вероятно, также опубликую это где-нибудь на рынке или на моем собственном сайте, http://roryok.com
package com.roryok.PlaylistPurge;
import java.util.ArrayList;
import java.util.List;
import android.app.ListActivity;
import android.content.ContentUris;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
public class PlaylistPurge extends ListActivity {
private List<String> list = new ArrayList<String>();
private final String [] STAR= {"*"};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ListAdapter adapter = createAdapter();
setListAdapter(adapter);
}
/**
* Creates and returns a list adapter for the current list activity
* @return
*/
protected ListAdapter createAdapter()
{
// return play-lists
Uri playlist_uri= MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI;
Cursor cursor= managedQuery(playlist_uri, STAR, null,null,null);
cursor.moveToFirst();
for(int r= 0; r<cursor.getCount(); r++, cursor.moveToNext()){
int i = cursor.getInt(0);
int l = cursor.getString(1).length();
if(l>0){
// keep any playlists with a valid data field, and let me know
list.add("Keeping : " + cursor.getString(2) + " : id(" + i + ")");
}else{
// delete any play-lists with a data length of '0'
Uri uri = ContentUris.withAppendedId(MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI, i);
getContentResolver().delete(uri, null, null);
list.add("Deleted : " + cursor.getString(2) + " : id(" + i + ")");
}
}
cursor.close();
// publish list of retained / deleted playlists
ListAdapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list);
return adapter;
}
}
UPDATE:
Вот ссылка на сообщение в моем блоге о приложении http://roryok.com/blog/index.php/2010/07/23/clearing-out-deleted- плейлисты-в-андроиде /
ОБНОВЛЕНИЕ 2: Вторник, 9 апреля 2013 г.
Я получил большой трафик в своем блоге с этого поста, и огромное количество писем от людей, поблагодаривших меня за это. Рад, что это помогло! Любые потенциальные пользователи должны знать, что мое дерьмовое приложение в настоящее время сбой, как только вы его запускаете, но фактически делает то, что он должен делать! Я всегда собирался вернуться и исправить это разрушительное поведение и поставить его на рынок, надеюсь, 2013 год станет годом, когда я это сделаю.
Вот простое решение на основе одного файла:
Всякий раз, когда вы добавляете файл, пусть MediaStore Content Provider знает об этом с помощью
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(imageAdded)));
. Для удаления: просто используйте getContentResolver (). delete (uri, null, null) (Кредит переходит на DDSports )
Вы можете запросить повторное сканирование определенных файлов с помощью следующего кода.
ПРИМЕЧАНИЕ. Переданный MIME TYPE важен. Я заметил, что изменения, внесенные в теги MP3 ID3, не обновились должным образом в SQLite, если я использовал «* / *», однако используя «audio / mp3» [
MediaScannerConnection.scanFile(
context,
new String[]{ pathToFile1, pathToFile2 },
new String[]{ "audio/mp3", "*/*" },
new MediaScannerConnectionClient()
{
public void onMediaScannerConnected()
{
}
public void onScanCompleted(String path, Uri uri)
{
}
});