在建立的网络连接上启动android应用程序

时间:2015-08-05 17:06:36

标签: java android

建立网络连接时有没有办法启动 android应用程序?我想在建立网络连接后启动服务,而不事先打开应用程序。即使应用程序已关闭,我也需要此服务在网络连接后始终在后台运行。

也许类似于在启动时如何启动应用程序?

任何建议都表示赞赏。

2 个答案:

答案 0 :(得分:0)

您可以尝试监控已解释的连接更改here

您可以使用 _data.Orders.Load(); this.Orders=_data.Orders.Local; ,以便服务始终在后台运行。要使服务保持运行,您还可以考虑使用唤醒锁。但这可能会更快地耗尽电池。

答案 1 :(得分:0)

您可以添加一个可以收听网络状态变化的BroadcastReceiver并检查是否有互联网,然后启动您的应用。
在这里你是广播

public class NetworkChangeReceiver extends BroadcastReceiver {

private Context context;

@Override
public void onReceive(final Context context, final Intent intent) {
        this.context = context;

        if (isOnline()) {
            // if the internet is working, start the main activity or any activity you want
            Intent i = new Intent(context, MainActivity.class);
            context.startService(i);
        }
    }

    private boolean isOnline() {
        ConnectivityManager cm = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);

        return cm.getActiveNetworkInfo() != null
                && cm.getActiveNetworkInfo().isConnectedOrConnecting();
    }
}

将这些权限添加到清单

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

并将其添加到应用程序标记内的清单中“只需在类名称之前添加您的包名称”

<receiver
        android:name="add your package name here.NetworkChangeReceiver"
        android:label="NetworkChangeReceiver" >
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
        </intent-filter>
</receiver>

希望它有所帮助:)