Android开机自启监听网络改变源码
生活随笔
收集整理的這篇文章主要介紹了
Android开机自启监听网络改变源码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
先看下主頁面代碼
mainactivity.java
package cn.xiayiye.networkchange;import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.os.Bundle; import android.provider.Settings; import android.telephony.TelephonyManager; import android.text.TextUtils; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast;import java.lang.reflect.Method;public class MainActivity extends Activity implements View.OnClickListener {private NetworkChange networkChange;private TextView change;private Button set_network;private EditText message;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);change = (TextView) findViewById(R.id.change);Button send_broadcast = (Button) findViewById(R.id.send_broadcast);set_network = (Button) findViewById(R.id.set_network);message = (EditText) findViewById(R.id.message);change.setFocusable(true);change.setClickable(true);listenerNetWorkChange();send_broadcast.setOnClickListener(this);change.setOnClickListener(this);set_network.setOnClickListener(MainActivity.this);}private void listenerNetWorkChange() { /* IntentFilter intentFilter = new IntentFilter();intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");//一樣的效果intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);//一樣的效果和下面*/IntentFilter intentFilter = new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE");//網絡狀態改變的廣播networkChange = new NetworkChange();registerReceiver(networkChange, intentFilter);}class NetworkChange extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();//獲取網絡狀態if (activeNetworkInfo != null && activeNetworkInfo.isAvailable()) {Toast.makeText(MainActivity.this, "已連網!", Toast.LENGTH_LONG).show();change.setText("網絡已連接!");set_network.setVisibility(View.GONE);} else {Toast.makeText(MainActivity.this, "已斷網!", Toast.LENGTH_LONG).show();set_network.setVisibility(View.VISIBLE);change.setText("網絡已斷開!");}}}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.change:setMobileDataEnabled(true);Toast.makeText(MainActivity.this, "點擊了!", Toast.LENGTH_LONG).show();break;case R.id.send_broadcast:String trim = message.getText().toString().trim();if (TextUtils.isEmpty(trim)) {Toast.makeText(MainActivity.this, "請輸入內容,在發送廣播!", Toast.LENGTH_LONG).show();} else {//發送自定義廣播 // Intent intent = new Intent();Intent intent = new Intent("com.yhsh.xiayiye"); // intent.setAction("com.yhsh.xiayiye");//一樣的效果,這里是setAction,在intentFilter里面是addActionintent.putExtra("send", "揚宏豕慧接收到的廣播:" + trim);sendBroadcast(intent);sendOrderedBroadcast(intent, null);}break;case R.id.set_network://跳轉到網絡設置頁面Intent intent_net = new Intent(Settings.ACTION_DATA_ROAMING_SETTINGS);startActivity(intent_net);break;}}@Overrideprotected void onDestroy() {super.onDestroy();unregisterReceiver(networkChange);}public boolean setMobileDataEnabled(boolean enabled) {final TelephonyManager mTelManager;mTelManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);try {Method m = mTelManager.getClass().getDeclaredMethod("getITelephony");m.setAccessible(true);Object telephony = m.invoke(mTelManager);m = telephony.getClass().getMethod((enabled ? "enable" : "disable") + "DataConnectivity");m.invoke(telephony);return true;} catch (Exception e) {return false;}} }再看下我們定義的開機自啟廣播
bootCompleteReceiver.java package cn.xiayiye.networkchange;import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.widget.Toast;public class bootCompleteReceiver extends BroadcastReceiver {static final String ACTION = "android.intent.action.BOOT_COMPLETED";@Overridepublic void onReceive(Context context, Intent intent) {Toast.makeText(context, "開機了!", Toast.LENGTH_LONG).show(); // throw new UnsupportedOperationException("Not yet implemented");if (intent.getAction().equals(ACTION)) {//APP的開機自啟實現方法Intent mainActivityIntent = new Intent(context, MainActivity.class); // 要啟動的ActivitymainActivityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);context.startActivity(mainActivityIntent);}} }再看下自定義的廣播文件
CustomerReceiver.java package cn.xiayiye.networkchange;import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.widget.Toast;public class CustomerReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {String send = intent.getStringExtra("send");//拿到發送廣播發過來的數據Toast.makeText(context, "發送了自定義廣播,內容為:\n" + send, Toast.LENGTH_LONG).show(); // abortBroadcast();//從此處阻斷廣播} }再看下相應的清單配置
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"package="cn.xiayiye.networkchange">//查看網絡狀態<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />//更改網絡狀態<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />//開機自啟動權限<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/AppTheme"><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><receiverandroid:name=".bootCompleteReceiver"android:enabled="true"android:exported="true"><intent-filter>//以下為開機自啟動廣播,添加后可檢測到系統開機<action android:name="android.intent.action.BOOT_COMPLETED" /></intent-filter></receiver><receiverandroid:name=".CustomerReceiver"android:enabled="true"android:exported="true"><intent-filter><action android:name="com.yhsh.xiayiye" /></intent-filter></receiver></application></manifest>好了,想要源碼的可以下載:點擊下載源碼
總結
以上是生活随笔為你收集整理的Android开机自启监听网络改变源码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: netty面试题
- 下一篇: vue+element 动态切换表单中