我知道之前已经被问了一百万次,但没有什么对我有用。在从LaunchIntent
启动应用程序后按下按钮时,我需要在单独的类中启动服务。
长话短说,这是我的目标:
运行命令>等待三秒钟让命令运行>启动应用程序>启动服务
该服务用于监控CONFIGURATION_CHANGED广播。
清单(重要的部分):
</activity>
<receiver android:name="MyReceiver" >
<intent-filter>
<action android:name="android.intent.action.CONFIGURATION_CHANGED" >
</action>
</intent-filter>
</receiver>
<service android:enabled="true" android:name=".MyService" />
</application>
</manifest>
MyService.java:
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
import android.widget.Toast;
import android.app.Service;
public class MyService extends Service {
String[] commandsdefault = {"/x"};
public void onCreate() {
Toast.makeText(this, "x", Toast.LENGTH_SHORT);
}
public void onDestroy() {
Toast.makeText(this, "x", Toast.LENGTH_SHORT);
}
public void onReceive(Context context, Intent intent) {
MainActivity ogres = new MainActivity();
ogres.RunAsRoot(commandsdefault);
}
@Override
public void onStart(Intent intent, int startid) {
Toast.makeText(this, "x", Toast.LENGTH_SHORT);
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
然后我只需在MainActivity.java中使用以下行来调用服务即可启动:
startService(new Intent(getApplicationContext(), MyService.class));
我比模特商店的蚊子更困惑。除了u=0 not found
之外,LogCat绝对没有任何帮助。
我在这里有不正确的东西吗?我甚至没有看到服务开始的祝酒。
答案 0 :(得分:1)
确保您的服务在Android清单
中声明答案 1 :(得分:1)
尝试覆盖服务的onStartCommand()方法。希望这有帮助
答案 2 :(得分:0)
尝试将服务的全名指定为android:name属性(例如android:name =“com.example.MyService”)
答案 3 :(得分:0)
好的,解决了我自己的问题。
MyService一直在运行!我只是没有看到吐司通知在它开始时提醒我。现在我在我的主Activity中有一个监视器,它在启动/杀死服务时发布一个toast,而不是使用MyService本身发布toast。