Caused by: android.util.AndroidRuntimeException


请检查我的代码,我

在某些安卓版本的服务中遇到异常 下面是我的错误代码,请告诉我如何解决这个问题 我添加的 计时器在服务中,并且我认为也从服务启动活动 有一些问题

下面的代码在安卓工作室的模拟器中运行流畅,但是当我在安卓手机和平板电脑上运行它时会出现问题。


java.lang.RuntimeException: 
  at android.app.ActivityThread.handleServiceArgs (ActivityThread.java:4145)
  at android.app.ActivityThread.access$2400 (ActivityThread.java:229)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1924)
  at android.os.Handler.dispatchMessage (Handler.java:102)
  at android.os.Looper.loop (Looper.java:148)
  at android.app.ActivityThread.main (ActivityThread.java:7325)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1230)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1120)
Caused by: android.util.AndroidRuntimeException: 
  at android.app.ContextImpl.startActivity (ContextImpl.java:747)
  at android.app.ContextImpl.startActivity (ContextImpl.java:734)
  at android.content.ContextWrapper.startActivity (ContextWrapper.java:345)
  at www.androidghost.com.batteryalarm.MyAlarmServiceClass.onStartCommand (MyAlarmServiceClass.java:136)
  at android.app.ActivityThread.handleServiceArgs (ActivityThread.java:4128)
public class MyAlarmServiceClass extends Service
{
    int ring_choice;
    String ring_array[]={"ring_a","ring_b","ring_c","ring_d","ring_e","ring_f","ring_g","ring_h","ring_i","ring_j","ring_k","ring_l"};
    Ringtone ringtone;
    public SharedPreferences mSharedPreferencesAlert;
    SharedPreferences getmSharedPreferences;
    SharedPreferences MusicPref;
    String path;
    Vibrator vibrator;
    Timer mTimer;
    @Nullable
    @Override
    public IBinder onBind(Intent intent)
    {
        return null;
    }
    @Override
    public int onStartCommand(Intent intent, int flags, int startId)
    {
        vibrator= (Vibrator) getSystemService(VIBRATOR_SERVICE);
        try
        {
            mTimer = new Timer();
            mTimer.scheduleAtFixedRate(new TimerTask() {
                public void run() {
                    if (ringtone!=null) {
                        ringtone.play();
                    }
                }
            }, 5000*1, 5000*1);
            vibrator.vibrate(3000);
        }
        catch (NullPointerException e)
        {
            e.printStackTrace();
        }
        mSharedPreferencesAlert=getSharedPreferences("ring", Context.MODE_PRIVATE);
        ring_choice= mSharedPreferencesAlert.getInt("rings",3);
        MusicPref= getSharedPreferences("Musics", Context.MODE_PRIVATE);
        path=MusicPref.getString("Music",null);
       //below shared prefrence is used to save value of checkbox which is in autofragment
        getmSharedPreferences=getSharedPreferences("setring", Context.MODE_PRIVATE);
        boolean checkV= getmSharedPreferences.getBoolean("setrings",true);

        if(ringtone!=null)
        {
            ringtone.stop();
            ringtone=null;
        }
       if(checkV)
        {
            try
            {
                AudioManager audioManager= (AudioManager) getSystemService(Context.AUDIO_SERVICE);
                audioManager.setStreamVolume(AudioManager.STREAM_ALARM,100,0);
            }
            catch (NullPointerException e)
            {
                e.printStackTrace();
            }
                if (ring_choice==13)
                {
                    if(path!=null)
                    {
                        Uri Customuri=Uri.parse(path);
                        ringtone = RingtoneManager.getRingtone(getApplicationContext(),Customuri);
                        ringtone.setStreamType(AudioManager.STREAM_ALARM);
                        ringtone.play();
                    }
                }
                else
                {
                    Uri rawPath=Uri.parse("android.resource://"+getPackageName()+"/raw/"+ring_array[ring_choice-1]);
                    ringtone = RingtoneManager.getRingtone(getApplicationContext(),rawPath);
                    ringtone.setStreamType(AudioManager.STREAM_ALARM);
                    ringtone.play();
                }
        }
        else
        {
            if (ring_choice==13)
            {
                if(path!=null)
                {
                   Uri Customuri=Uri.parse(path);
                    ringtone = RingtoneManager.getRingtone(getApplicationContext(),Customuri);
                    ringtone.play();
                }
            }
            else
            {
                Uri rawPath=Uri.parse("android.resource://"+getPackageName()+"/raw/"+ring_array[ring_choice-1]);
                ringtone = RingtoneManager.getRingtone(getApplicationContext(),rawPath);
                ringtone.play();
            }
        }
        Intent stopDialog=new Intent(this, DialogActivity.class);
        stopDialog.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        stopDialog.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
        startActivity(stopDialog);
        return START_STICKY;
    }

    @Override
    public void onDestroy()
    {
        if(ringtone!=null)
        {
            ringtone.stop();
            ringtone=null;
        }
        try
        {
            vibrator.cancel();
        }
        catch (NullPointerException e)
        {
            e.printStackTrace();
        }
        super.onDestroy();
    }
}

更新此代码:

Intent stopDialog=new Intent(this, DialogActivity.class(; stopDialog.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP(; stopDialog.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT(; startActivity(stopDialog(;

自:

    Intent stopDialog=new Intent(this, DialogActivity.class);
    stopDialog.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    stopDialog.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
    stopDialog.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(stopDialog);

相关内容

最新更新