0

我是android新手。我在我的应用程序中编写了一个服务..我正在安装我的应用程序(未启动)..此时我的服务应该开始运行并打开一个用户界面..如何做到这一点

4

4 回答 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" />
  1. 然后设置一个广播监听器来监听启动:

    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 回答