2012-02-10 18 views
0

私のアプリケーションでは、sdカードから何かを読むことを目的としたサービスを作成します。起動時にディレクトリが見つからない

サービスは起動時に作成され、起動されます。

問題は、ディレクトリが存在することをかなり確信していますが、起動時にサービスがディレクトリを見つけることができないということです。出力

  1. 上記

    public void onStart(Intent intent, int startId) { 
        super.onStart(intent, startId); 
        Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show(); 
        Context context=getBaseContext(); 
        File sdDir = new File(Environment.getExternalStorageDirectory()+"/temp/Data/"); 
        if(!sdDir.exists()){ 
         sdDir.mkdir(); 
         Toast.makeText(this, "CAN'T FIND!", Toast.LENGTH_LONG).show(); 
        } 
    } 
    

    このスニペットサービスは

  2. 見つけることができませんスタート!

最初は、ブート時にsdカードがマウントされていない可能性があるため、サービスでディレクトリを見つけることができません。私はそれについてまだよく分かりません。

誰でもアイデアはありますか?何が問題なのでしょうか?

答えて

2

SDカードをマウントするのに時間がかかるデバイスもあります。ブート時にすぐに使用できないことがあります。

利用可能になるまで数秒ごとにポーリングするだけです。

また、この方法を試してください。

public static boolean hasStorage(boolean requireWriteAccess) { 
    String state = Environment.getExternalStorageState(); 

    if (Environment.MEDIA_MOUNTED.equals(state)) { 
     return true; 
    } else if (!requireWriteAccess && Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) { 
     return true; 
    } 
    return false; 
} 

From Here