在Android 8.1后我使用静态广播时会发现接收不到广播,下面有两种方法:
1、动态广播替换静态广播
2、保留原来的静态广播,使用setComponent参数

 Intent intent = new Intent();        intent.setAction("com.wq.package.silentinstaller");        intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);        intent.setComponent(new ComponentName("com.android.packageinstaller",                "com.android.packageinstaller.MyReceiver"));       sendBroadcast(intent);

为了发送广播的时候只让特定的某一个应用程序APP接收到数据,而不想其他应用程序接收到数据的时候,需要配置权限。
一、广播接收者设置权限:
在AndroidManifest.xml中添加权限和定义静态广播

                                                           

创建一个静态广播MyReceiver.java类

public class MyReceiver extends BroadcastReceiver {private static final String TAG = "SilentInstallReceiver";private Context mContext;private static final String ACTION_SILENCE_INSTALL = "com.wq.package.silentinstaller";private static final String KEY_FILE_PATH = "file_path";private static final String KEY_PACKAGE_NAME = "package_name";private static final int MSG_SILENT_INSTALL = 1;private Handler mHandler = new Handler() {public void handleMessage(android.os.Message msg) {switch (msg.what) {case MSG_SILENT_INSTALL:Intent intent = (Intent) msg.obj;String filePath = intent.getStringExtra(KEY_FILE_PATH);String packageName = intent.getStringExtra(KEY_PACKAGE_NAME);Log.i(TAG, "---MSG_SILENT_INSTALL filePath=" + filePath + ",packageName=" + packageName);SilentInstallManager.getInstance(mContext).startInstall(filePath);break;default:break;}};};@Overridepublic void onReceive(Context context, Intent intent) {String action = intent.getAction();Log.i(TAG, "onReceive() action="+action);if (ACTION_SILENCE_INSTALL.equals(action)) {mContext = context;Message msg = Message.obtain(mHandler);msg.what = MSG_SILENT_INSTALL;msg.obj = intent;mHandler.sendMessage(msg);}}/** * installPackageName  : The package name of apk you want to install. * apkFilePath         : The path of the apk file. *  private void install(String installPackageName, String apkFilePath){Intent intent = new Intent();intent.setAction("com.wq.package.silentinstaller");intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);intent.setComponent(new ComponentName("com.android.packageinstaller","com.android.packageinstaller.MyReceiver"));intent.putExtra("package_name", installPackageName);intent.putExtra("file_path", apkFilePath);mContext.sendBroadcast(intent);}*/}

二、广播发送者
发送广播的应用装备该权限

添加一个按钮发送广播

 Intent intent = new Intent(); intent.setAction("com.wq.package.silentinstaller");intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);intent.setComponent(new ComponentName("com.android.packageinstaller",                "com.android.packageinstaller.MyReceiver")); sendBroadcast(intent);

更多相关文章

  1. Android4: Write Storage权限问题
  2. android 8.0 ,9.0 静态广播不显示问题处理
  3. android 在应用中安装其他程序
  4. android广播的使用
  5. Android拨号键盘增加魔力爱心数字
  6. Android有哪些权限?Android开发权限集合
  7. Android之Kotlin入门:常量和静态方法
  8. Android中利用Application实现多个Activity间共享数据
  9. Cocos2d-x开发移植到安卓平台横竖屏设置及相关

随机推荐

  1. Android中Notification的framework层讲解
  2. Android权限之sharedUserId和签名
  3. Android(安卓)程序以及在4.4.4以上报错但
  4. android 仿微信聊天气泡效果实现思路
  5. 巧用android 控件—CheckBox + 状态选择
  6. Android(安卓)Monkey测试入门-2-ADB安装
  7. Android(安卓)Add外部library工程,总是链
  8. Android(安卓)实现广告欢迎界面(倒计时)
  9. Android线程通信之Handler
  10. android 安全讲座第四层(扩展篇)