おはようございます。
公開している情報が少なすぎました。申し訳ありません。
開発環境:Eclipse4.2JUNO / JDK7u45 / Android SDK (ExtrasとToolsは全部入れています)
JCIFS 1.3.17 (参照ライブラリーへ外部jarで追加)
Manifestにandroid.permission.INTERNET (Uses Permission)追加
今のところのソースコード↓
AsyncTest.java(メインスレ)
---------------------------------------------------------------------------------------------------------------------------------------------
package com.example.asynctest;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class AsyncTest extends Activity
implements OnClickListener {
final String TAG = "AsyncTest";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_async_test);
((Button)findViewById(R.id.button1))
.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if(v.getId() == R.id.button1){
new AsyncTest2(this).execute("Param1");
}
}
}
AsyncTest2.java(サブスレ)
----------------------------------------------------------------------------------------------------------------------------------------------
package com.example.asynctest;
import jcifs.smb.SmbFile;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.os.AsyncTask;
import android.util.Log;
public class AsyncTest2
extends AsyncTask<String, Integer, Long>
implements OnCancelListener{
final String TAG = "MyAsyncTask";
ProgressDialog dialog;
Context context;
public AsyncTest2(Context context){
this.context = context;
}
@Override
protected void onPreExecute() {
Log.d(TAG, "onPreExecute");
dialog = new ProgressDialog(context);
dialog.setTitle("Please wait");
dialog.setMessage("Loading data...");
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
dialog.setCancelable(true);
dialog.setOnCancelListener(this);
dialog.setMax(100);
dialog.setProgress(0);
dialog.show();
try {
SmbFile file = new SmbFile("smb://ユーザ名:パスワード@サーバ名(コンピュータ名?)/パス/");
String[] filenames = file.list();
for (int i = 0; i < filenames.length; i++) {
System.out.println(filenames[i]);
}
} catch (Exception e ) {
e.printStackTrace();
}
}
@Override
protected Long doInBackground(String... params) {
Log.d(TAG, "doInBackground - " + params[0]);
try {
for(int i=0; i<10; i++){
if(isCancelled()){
Log.d(TAG, "Cancelled!");
break;
}
Thread.sleep(1000);
publishProgress((i+1) * 10);
}
} catch (InterruptedException e) {
Log.d(TAG, "InterruptedException in doInBackground");
}
return 123L;
}
@Override
protected void onProgressUpdate(Integer... values) {
Log.d(TAG, "onProgressUpdate - " + values[0]);
dialog.setProgress(values[0]);
}
@Override
protected void onCancelled() {
Log.d(TAG, "onCancelled");
dialog.dismiss();
}
@Override
protected void onPostExecute(Long result) {
Log.d(TAG, "onPostExecute - " + result);
dialog.dismiss();
}
@Override
public void onCancel(DialogInterface dialog) {
Log.d(TAG, "Dialog onCancell... calling cancel(true)");
this.cancel(true);
}
}
---------------------------------------------------------------------------------------------------------------------
動作
smb()付近をコメントアウトしていると、
起動
↓
ボタン表示(クリックすると・・・)
↓
please waitとゲージ上昇(10%ずつ)
↓
100%になると、起動時の画面に戻る。
です。
smb()をいれると
エラー
LogCat
-------------------------------------------------------------------------------------------
java.lang.ExceptionInInitializerError
at jcifs.smb.SmbFile.getFirstAddress(SmbFile.java:864)
at jcifs.smb.SmbFile.connect(SmbFile.java:951)
at jcifs.smb.SmbFile.connect0(SmbFile.java:880)
at jcifs.smb.SmbFile.getType(SmbFile.java:1282)
at jcifs.smb.SmbFile.doEnum(SmbFile.java:1733)
at jcifs.smb.SmbFile.list(SmbFile.java:1709)
at jcifs.smb.SmbFile.list(SmbFile.java:1606)
at com.example.asynctest.AsyncTest2.onPreExecute(AsyncTest2.java:41)
at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:549)
at android.os.AsyncTask.execute(AsyncTask.java:499)
at com.example.asynctest.AsyncTest.onClick(AsyncTest.java:25)
at android.view.View.performClick(View.java:3110)
at android.view.View$PerformClick.run(View.java:11934)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:132)
at android.app.ActivityThread.main(ActivityThread.java:4123)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:491)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ExceptionInInitializerError
at jcifs.UniAddress.<clinit>(UniAddress.java:62)
... 22 more
Caused by: android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1077)
at java.net.InetAddress.lookupHostByName(InetAddress.java:477)
at java.net.InetAddress.getLocalHost(InetAddress.java:445)
at jcifs.netbios.NbtAddress.<clinit>(NbtAddress.java:187)
... 23 more
タグ---AndroidRuntime
-------------------------------------------------------------------------------------------------------------------------------------
以上です。長文申し訳ありませんが、どう解決しファイルサーバへとつなぐことができるのか・・
よろしくお願いします。
2014年1月19日日曜日 21時03分20秒 UTC+9 かっぱ大王: