0

I have configured my app to automatically start on boot and it's working but only the first time :/

The manifest

 <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" /> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" /> <uses-permission android:name="android.permission.SHUTDOWN"/> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.PREVENT_POWER_KEY" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.REBOOT" /> <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" /> <uses-permission android:name="android.permission.DEVICE_POWER" /> <receiver android:name=".autostart" android:enabled="true" android:exported="true"> <intent-filter> <category android:name="android.intent.category.DEFAULT"/> <action android:name="android.intent.action.BOOT_COMPLETED"/> <action android:name="android.intent.action.QUICKBOOT_POWERON"/> <action android:name="android.intent.action.REBOOT"/> <!--For HTC devices--> <action android:name="com.htc.intent.action.QUICKBOOT_POWERON"/> </intent-filter> </receiver> 

The autostart

public class autostart extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Intent i = new Intent(context, MainActivity.class); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(i); Log.d("AutoStart", "AutoStart"); } } 

I restart and shutdown the app with this code :

 public static void Reboot(CaniGPSApplication caniGPSApplication) throws IOException, InterruptedException { Process proc = Runtime.getRuntime().exec(new String[] { "/system/bin/svc", "power", "reboot" }); proc.waitFor(); } public static void Shutdown(CaniGPSApplication caniGPSApplication) throws IOException, InterruptedException { Process proc = Runtime.getRuntime().exec(new String[] { "/system/bin/svc", "power", "shutdown" }); proc.waitFor(); } 

I have no idea why my apps doesn't start the second time. I am working on a GPS device (no screen ...) and my app is in system/priv-app .

Hope someone will have an idea :)

1 Answer 1

1

I have found a solution.

First I remove autostart block which is not more used

<receiver android:name=".autostart" 

And I have added the HOME category in my main activity

<activity android:name=".MainActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER"/> <category android:name="android.intent.category.HOME"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity> 

From the documentation

This is the home activity, that is the first activity that is displayed when the device boots.

Perfect for my case : a simple GPS device, but I think a bad idea on a phone :)

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.