我是android新手。我在我的应用程序中编写了一个服务..我正在安装我的应用程序(未启动)..此时我的服务应该开始运行并打开一个用户界面..如何做到这一点
问问题
2500 次
4 回答
1
安装应用程序后您无法启动您的 UI 或服务,但您可以做的是您可以听一些 Intent Action。并从您的广播接收器开始您想要的任何东西。
您需要在清单中注册接收器,并使用一个操作,例如 PHONE_STAT_CHANGE、收到的消息、屏幕解锁 .. 您可以在您的应用程序中收听很多意图并开始您想要的任何内容。
PS:- 动作名称在开发者网站上搜索不正确
于 2012-07-30T04:59:14.403 回答
0
Deepak,您可以通过广播接收器启动服务,方法是指定要在什么基础上激活广播接收器,您可以在清单中声明广播接收器,例如
<receiver android:name=".BroadCast"
android:enabled="false">
<intent-filter>
<action android:name=
"android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
接到电话时应激活
你可以打电话给你的服务
public class BroadCast extends BroadcastReceiver{
Context context = null;
@Override
public void onReceive(Context context, Intent intent)
{
Intent dndService = new Intent(context,
ContactService.class);
dndService.putExtra("phone_nr", number);
context.startService(dndService);
}
}
当电话响起时,您的广播接收器将被激活并启动一项服务,您可以从该服务启动一项活动,例如
public class ServiceExample extends IntentService {
public ServiceExample () {
super("ServiceExample ");
// TODO Auto-generated constructor stub
}
@Override
protected void onHandleIntent(Intent intent) {
// TODO Auto-generated method stub
Intent.intent = new Intent(this , Example.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent );
}
}
并且您需要在活动之前添加此行,否则它会给您带来崩溃
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
于 2012-07-30T05:42:48.820 回答
0
不,这是不可能的。在您启动您的Service
. 对不起。
于 2012-07-30T04:33:36.680 回答
0
我认为最好的想法是首先让您的服务在您的服务 onStartCommand 中“返回 START_STICKY”。
然后你可以添加一个启动监听器,如下所示;1. 对您的清单,请求权限:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
然后设置一个广播监听器来监听启动:
public class MyBroadcastreceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Intent startServiceIntent = new Intent(context, MyService.class); context.startService(startServiceIntent); }
您的服务将无限期运行,如果因内存丢失而停止,可以在资源可用时自动重新启动;
于 2016-12-20T16:10:37.550 回答