How to Auto-start an Android Application?

后端 未结 4 668
花落未央
花落未央 2020-11-27 11:02

I\'m not sure how to autostart an android application after the android emulator completes its booting. Does anyone have any code snippets that will help me?

4条回答
  •  野趣味
    野趣味 (楼主)
    2020-11-27 11:35

    I always get in here, for this topic. I'll put my code in here so i (or other) can use it next time. (Phew hate to search into my repository code).

    Add the permission:

    
    

    Add receiver and service:

    
        
            
            
        
    
    
    

    Create class Launcher:

    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() {
    
                @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;
        }
    }
    

    Create class BootUpReceiver to do action after android reboot.

    For example launch 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);  
        }
    }
    

提交回复
热议问题