1

我想在撥號程序(默認或撥號程序)打開時啓動服務。我的服務只是爲了留言。如何啓動撥號程序的服務。 startService命令正在MainActivity中工作,但在撥號程序打開時它不工作。如何在撥號程序(默認或股票撥號程序)中啓動服務android

我的代碼如下所示:

的Manifest.xml

<?xml version="1.0" encoding="utf-8"?>  

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.chatheads"> 

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> 
<uses-permission android:name="android.permission.DIAL_ACTION" /> 
<uses-permission android:name="android.permission.CALL_PHONE" /> 


    <application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity android:name=".MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <service 
     android:name=".MyService" 
     android:enabled="true" 
     android:exported="true" /> 

    <activity android:name=".SecondActivity"></activity> 
</application> 

</manifest> 

MainActivity.java

package com.example.chatheads; 

import android.support.v7.app.AppCompatActivity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.text.method.DialerKeyListener; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 


public class MainActivity extends AppCompatActivity { 
Button startService,stopService; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    startService=(Button)findViewById(R.id.startService); 
    stopService=(Button)findViewById(R.id.stopService); 




    if(getIntent().getAction().equals(Intent.ACTION_DIAL)) { 
     Intent intent = new Intent(getBaseContext(), MyService.class); 
     startService(intent); 

    } 

    startService.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      startService(new Intent(getApplication(), MyService.class)); 




     } 
    }); 
    stopService.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      stopService(new Intent(getApplication(), MyService.class)); 



     } 
    }); 


    } 
} 

Myservice.java

package com..service; 

import android.app.Service; 
import android.content.Intent; 
import android.os.IBinder; 
import android.widget.Toast; 

public class MyService extends Service { 
    @Override 
    public void onCreate() { 
     // TODO Auto-generated method stub 
    super.onCreate(); 
    Toast.makeText(this, "Service Created", Toast.LENGTH_LONG).show(); 

    } 
@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    // TODO Auto-generated method stub 
    Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show(); 
    intent.getStringExtra("MY_MESSAGE"); 
    //stopSelf(); 
    return super.onStartCommand(intent, flags, startId); 
} 
@Override 
public void onDestroy() { 
    // TODO Auto-generated method stub 
    super.onDestroy(); 
    Toast.makeText(this, "Service Stopped", Toast.LENGTH_LONG).show(); 

} 

@Override 
public IBinder onBind(Intent arg0) { 
    // TODO Auto-generated method stub 
    return null; 
} 

} 

此代碼無效。在MainActivity中調用startService時啓動該服務。但是當撥號程序打開它不工作。

回答

0

我想也許你可以嘗試改變getApplication()MainActivity.this

我想你需要從撥號器跳到MainActivity才能啓動服務

相關問題