Quantcast
Channel: Appcelerator Developer Center Q&A Tag Feed (boot)
Viewing all articles
Browse latest Browse all 12

How to launch Android app on boot

$
0
0

I need to launch my Android app on boot of the OS. Worst case, I can use a 3rd party app like LaunchAfterBoot to achieve this, however I was hoping to get it working using the AndroidManifest settings.

On AndroidSnippets - http://www.androidsnippets.com/autostart-an-application-at-bootup - it gives a way to get this working. I added this to tiapp.xml:

<android xmlns:android="http://schemas.android.com/apk/res/android">
        <manifest android:versionCode="8" android:versionName="1.07">
            <supports-screens android:anyDensity="false"/>
            <application>
                <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>
            </application>
            <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
        </manifest>
    </android>
When the app is built, the auto-generated AndroidManifest.xml looks like so:
<?xml version="1.0" ?><manifest android:versionCode="8" android:versionName="1.07" package="com.navtrak.driver" xmlns:android="http://schemas.android.com/apk/res/android">
    <supports-screens android:anyDensity="false"/><uses-sdk android:minSdkVersion="7"/>
 
    <!-- TI_MANIFEST -->
 
    <application android:debuggable="false" android:icon="@drawable/appicon" android:label="Driver" android:name="DriverApplication">
 
        <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>
 
        <activity android:configChanges="keyboardHidden|orientation" android:label="Driver" android:name=".DriverActivity" android:theme="@style/Theme.Titanium">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
 
        <activity android:configChanges="keyboardHidden|orientation" android:launchMode="singleTask" android:name="ti.modules.titanium.map.TiMapActivity"/>
    <uses-library android:name="com.google.android.maps"/>
 
        <activity android:configChanges="keyboardHidden|orientation" android:name="org.appcelerator.titanium.TiActivity"/>
        <activity android:configChanges="keyboardHidden|orientation" android:name="org.appcelerator.titanium.TiTranslucentActivity" android:theme="@android:style/Theme.Translucent"/>
        <activity android:configChanges="keyboardHidden|orientation" android:name="org.appcelerator.titanium.TiModalActivity" android:theme="@android:style/Theme.Translucent"/>
        <activity android:configChanges="keyboardHidden|orientation" android:name="ti.modules.titanium.ui.TiTabActivity"/>
        <activity android:name="ti.modules.titanium.ui.android.TiPreferencesActivity"/>
 
        <service android:exported="false" android:name="org.appcelerator.titanium.analytics.TiAnalyticsService"/>
 
 
    </application>
 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
    <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
 
 
</manifest>
So as you can see, it copied the required settings across correctly, however the app still doesn't start on boot. The second part from the link above says you have to create a BootUpReceiver class:
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);  
        }
 
}
I was hoping that Titanium would handle invoking the intent in the AndroidManifest automatically, but this doesn't seem to be the case. What would it take to get this working?

Viewing all articles
Browse latest Browse all 12

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>