如何自动启动Android应用程序?

我不知道如何自动启动Android模拟器完成启动后的Android应用程序。 有没有人有任何代码片段,将帮助我?

你必须添加一个清单许可条目:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

(当然你应该列出你的应用使用的所有其他权限)。

然后,实现BroadcastReceiver类,它应该是简单而快速的可执行文件。 最好的办法是在这个接收器中设置一个警报来唤醒你的服务(如果没有必要保持它运行,就像Prahast写的那样)。

 public class BootUpReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); PendingIntent pi = PendingIntent.getService(context, 0, new Intent(context, MyService.class), PendingIntent.FLAG_UPDATE_CURRENT); am.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + interval, interval, pi); }} 

然后,将一个Receiver类添加到清单文件中:

  <receiver android:enabled="true" android:name=".receivers.BootUpReceiver" android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver> 

编辑您的AndroidManifest.xml以添加RECEIVE_BOOT_COMPLETED权限

 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

编辑您的AndroidManifest.xml应用程序部分下面的权限

 <receiver android:enabled="true" android:name=".BootUpReceiver" android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver> 

现在写在下面的活动。

 public class BootUpReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { Intent i = new Intent(context, MyActivity.class); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(i); } } 

如果通过自动启动你的意思是自动启动电话启动,那么你应该注册一个BroadcastReceiver的BOOT_COMPLETED意图。 一旦启动完成,Android系统会广播该意图。

一旦你收到这个意图,你可以启动一个可以做你想做的事情的服务。

请注意,虽然在手机上运行一个服务通常是一个坏主意,因为即使闲置时也会占用系统资源。 您只应在需要时启动服务/应用程序,然后在不需要时停止。

我总是在这里,为这个话题。 我会把我的代码放在这里,所以我(或其他)下次可以使用它。 (憎恨search到我的存储库代码)。

添加权限:

 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

添加接收者和服务:

  <receiver android:enabled="true" android:name=".BootUpReceiver" android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver> <service android:name="Launcher" /> 

创build类启动器:

 public class Launcher extends Service { @Nullable @Override public IBinder onBind(Intent intent) { return null; } @Override public int onStartCommand(Intent intent, int flags, int startId) { new AsyncTask<Service, Void, Service>() { @Override protected Service doInBackground(Service... params) { Service service = params[0]; PackageManager pm = service.getPackageManager(); try { Intent target = pm.getLaunchIntentForPackage("your.package.id"); if (target != null) { service.startActivity(target); synchronized (this) { wait(3000); } } else { throw new ActivityNotFoundException(); } } catch (ActivityNotFoundException | InterruptedException ignored) { } return service; } @Override protected void onPostExecute(Service service) { service.stopSelf(); } }.execute(this); return START_STICKY; } } 

创build类BootUpReceiver在android重新启动后执行操作。

例如启动MainActivity:

 public class BootUpReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { Intent target = new Intent(context, MainActivity.class); target.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(target); } }