如何自动启动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); } }
- 如何通过ADBlockingAndroid屏幕?
- 当debugging代码块完成时,Android应用程序closures
- 如何在Libgdx中追踪时间(android)
- 在项目结构(Android Studio 0.3.4 – 0.5.2)中找不到导入模块选项
- 如何禁用所有我的应用程序或活动的默认声音效果
- 我怎样才能以编程方式启动android应用程序信息屏幕?
- 检索项目的父项时出错:升级到AppCompat v23后,找不到与给定名称匹配的资源
- managedQuery()vs context.getContentResolver.query()vs android.provider.something.query()
- 错误:原因:未指定buildToolsVersion