2014-02-08 2 views
0

Следующий код работает правильно и воспроизводит музыкальные файлы на SD-карте.
Я хочу показать предупреждение, если музыкальный файл не существует на SD-карте («не существующий музыкальный файл»).
Что я должен писать для этого?Показать предупреждение о наличии файла на sdcard в android

пожалуйста, помогите мне

это мой код:

public class DoaMatn1 extends Activity { 

MediaPlayer player; 
SeekBar seek_bar; 
Handler seekHandler = new Handler(); 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.doamatn); 

    WebView wv = (WebView) findViewById(R.id.wvdoa); 
    wv.setBackgroundColor(0x00000000); 
    wv.setHorizontalScrollBarEnabled(false); 
    wv.loadUrl("file:///android_asset/doatavasol.html"); 
WebSettings webSettings = wv.getSettings(); 
webSettings.setDefaultFontSize(20); 
getInit(); 
    seekUpdation(); 
} 
Intent intent = new Intent(android.content.Intent.ACTION_VIEW); 
File sdcard = Environment.getExternalStorageDirectory(); 
File audioFile = new File(sdcard.getPath() + "/bluetooth/یه سوال دارم مگه.mp3"); 

public void getInit() { 
    seek_bar = (SeekBar) findViewById(R.id.sbdoa); 
    player = MediaPlayer.create(this,Uri.fromFile(audioFile)); 
seek_bar.setMax(player.getDuration()); 
final ImageButton ib =(ImageButton) findViewById(R.id.btnplaydoa); 
ib.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      // check for already playing 
      if(player.isPlaying()){ 
       if(player!=null){ 
        player.pause(); 
        // Changing button image to play button 
        ib.setImageResource(R.drawable.play); 
       } 
      }else{ 
       // Resume song 
       if(player!=null){ 
        player.start(); 
        // Changing button image to pause button 
        ib.setImageResource(R.drawable.puse); 
       } 
      } 

     } 

    }); 

} 
Runnable run = new Runnable() { 

     @Override 
     public void run() { 
      seekUpdation(); 
     } 
    }; 

    public void seekUpdation() { 

     seek_bar.setProgress(player.getCurrentPosition()); 
     seekHandler.postDelayed(run, 1000); 
    } 
    @Override 
    public void onBackPressed() { 
     if(player!=null){ 
      if(player.isPlaying()){ 
     player.stop(); 
     } 
     super.onBackPressed(); 
    } 
}} 

мой LogCat:

02-09 00:57:24.629: E/AndroidRuntime(3650): FATAL EXCEPTION: main 
02-09 00:57:24.629: E/AndroidRuntime(3650): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.aseman14.ertebatbakhoda/com.aseman14.ertebatbakhoda.matn.DoaMatn1}: java.lang.NullPointerException 
02-09 00:57:24.629: E/AndroidRuntime(3650): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651) 
02-09 00:57:24.629: E/AndroidRuntime(3650): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) 
02-09 00:57:24.629: E/AndroidRuntime(3650): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
02-09 00:57:24.629: E/AndroidRuntime(3650): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935) 
02-09 00:57:24.629: E/AndroidRuntime(3650): at android.os.Handler.dispatchMessage(Handler.java:99) 
02-09 00:57:24.629: E/AndroidRuntime(3650): at android.os.Looper.loop(Looper.java:130) 
02-09 00:57:24.629: E/AndroidRuntime(3650): at android.app.ActivityThread.main(ActivityThread.java:3687) 
02-09 00:57:24.629: E/AndroidRuntime(3650): at java.lang.reflect.Method.invokeNative(Native Method) 
02-09 00:57:24.629: E/AndroidRuntime(3650): at java.lang.reflect.Method.invoke(Method.java:507) 
02-09 00:57:24.629: E/AndroidRuntime(3650): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 
02-09 00:57:24.629: E/AndroidRuntime(3650): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) 
02-09 00:57:24.629: E/AndroidRuntime(3650): at dalvik.system.NativeStart.main(Native Method) 
02-09 00:57:24.629: E/AndroidRuntime(3650): Caused by: java.lang.NullPointerException 
02-09 00:57:24.629: E/AndroidRuntime(3650): at com.aseman14.ertebatbakhoda.matn.DoaMatn1.getInit(DoaMatn1.java:49) 
02-09 00:57:24.629: E/AndroidRuntime(3650): at com.aseman14.ertebatbakhoda.matn.DoaMatn1.onCreate(DoaMatn1.java:39) 
02-09 00:57:24.629: E/AndroidRuntime(3650): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
02-09 00:57:24.629: E/AndroidRuntime(3650): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615) 
02-09 00:57:24.629: E/AndroidRuntime(3650): ... 11 more 
+0

@ user2469133 Там нет необходимости делать это, и сознательно использование исключения для потока управляющей программы - страшное предложение. – Simon

ответ

0
public void getInit() { 
    ... 
    if (!audioFile.exists()){ 
     AlertDialog alertDialog = new AlertDialog.Builder(this).create(); 
     alertDialog.setTitle("Music doesn't exist"); 
     alertDialog.setMessage("The music file was not found"); 
     alertDialog.setButton("OK", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int which) { 
       // handle click here 
      } 
     }); 
     alertDialog.setIcon(R.drawable.icon); 
     alertDialog.show(); 
    } 
    ... 
+0

Я добавляю код выше, но не могу быть введен в действие и принудительно закрыт – user3223706

+0

Пожалуйста, попробуйте объяснить это более подробно. –

+0

Я добавляю свой лог-кот ниже – user3223706

Смежные вопросы