Попытка использовать SmbFileInputStream

Это обновленная версия вопроса, который я задал на прошлой неделе.
Я пытаюсь использовать SmbFileInputStream для подключения моего Android к компьютеру,
но приложение прерывается (на моем планшете) с этим сообщением об ошибке:

"The application has stopped unexpectedly. Please try again."  

Я использую Try/Catch, но ни одно из этих исключений не вызывается.
Применимый код выглядит следующим образом:

   SmbFile inFile = null;  
   jcifs.Config.setProperty( "jcifs.netbios.wins", "192.168.2.2" ) }  
   try { inFile = new SmbFileInputStream( "smb://MIKE-PC/Users/Public/List1.txt" ); }
   catch (SmbException e)          {  ListItems.add("SMB Error");  }  
   catch (MalformedURLException e) {  ListItems.add("URL Error");  }  
   catch (UnknownHostException e)  {  ListItems.add("Host Error");  }

Я пробовал код с именем и паролем и без них, и ни один из них не работал:

   try { inFile = new SmbFile( "smb://MIKE-PC_Network:123ABC@Mike-PC/" ); }

Когда я пытаюсь сделать это в два этапа, SmbFile не прерывается, а прерывается SmbFileInputStream.

   try {  sFile = new SmbFile( "smb://MIKE-PC/Users/Public/List1.txt" );  }  
   try {  inFile = new SmbFileInputStream( sFile );  }  

Когда я пытаюсь получить список файлов, SmbFile не прерывается, но прерывается sFile.list.

   try {  sFile = new SmbFile( "smb://MIKE-PC/" ); }
   try {  lBuf = sFile.list(); . . .

Я нахожусь в локальной сети, а не в домене.
Планшет смог войти в систему с помощью другого приложения, поэтому я знаю, что сеть работает.
Я пробовал имена пользователя, сети и ПК в каждой комбинации. возможно.

Есть ли какая-то дополнительная информация, которая нужна SMB, прежде чем он заработает?

Например, после нескольких дней поиска в Интернете я нашел намеки на следующее:
* Java SMB не будет работать в Android — правда ли это и что у меня есть?
* Помещение jcifs.jar в libs не будет работать с jcifs.
* Нужно ли добавлять jar-файл jCIFS в CLASSPATH или это обрабатывается Eclipse?
* Нужно ли вызывать registerSmbURLHandler, если я передаю SmbFileInputStream литеральную строку?
* Нужно ли указывать в манифесте внешнее разрешение на чтение?

Правда ли это и что мне с этим делать?


person Humanoid1000    schedule 14.12.2012    source источник
comment
Добавьте catch в Throwable и проверьте, какое исключение генерируется. Кроме того, вы всегда должны добавлять библиотеки в CLASSPATH. Но обычно, если вы добавите их в проект, Eclipse узнает. Проверьте путь сборки, чтобы быть уверенным.   -  person Alfabravo    schedule 30.01.2013


Ответы (2)


вы пробовали "smb://username:password@local ip/" сделать это с фактическим IP-адресом. для меня мне пришлось сделать это с IP, с именем компьютера мое приложение никогда не подключалось к общему ресурсу Windows и зависало.

person tantonj    schedule 22.04.2013

У меня тоже такая же проблема, но я просто хотел частично ответить на ваш вопрос, добавив несколько уловок, которые вы должны включить в свой код, чтобы он не приводил к серьезному сбою.

Вот уловы, которые я добавил в свой код

catch (SmbException 
      | MalformedURLException 
      | UnknownHostException 
      | NetworkOnMainThreadException 
      | ExceptionInInitializerError e)

Если я найду дополнительную информацию, я отредактирую этот пост.

person Brandon    schedule 09.03.2016