隨筆雜記

             :: 首頁 :: 新隨筆 ::  ::  :: 管理 ::
          有兩種解決方法:
          1、設置Action和packageName:
          參考代碼如下:
          Intent mIntent = new Intent();
          mIntent.setAction("XXX.XXX.XXX");//你定義的service的action
          mIntent.setPackage(getPackageName());//這里你需要設置你應用的包名
          context.startService(mIntent);
          此方式是google官方推薦使用的解決方法。

          2、將隱式啟動轉換為顯示啟動:
          public static Intent getExplicitIntent(Context context, Intent implicitIntent) {
                  PackageManager pm = context.getPackageManager();
                  List<ResolveInfo> resolveInfo = pm.queryIntentServices(implicitIntent, 0);
                  if (resolveInfo == null || resolveInfo.size() != 1) {
                      return null;
                  }
                  ResolveInfo serviceInfo = resolveInfo.get(0);
                  String packageName = serviceInfo.serviceInfo.packageName;
                  String className = serviceInfo.serviceInfo.name;
                  ComponentName component = new ComponentName(packageName, className);
                  Intent explicitIntent = new Intent(implicitIntent);
                  explicitIntent.setComponent(component);
                  return explicitIntent;
              }
          調用方式如下:
          Intent mIntent = new Intent();
          mIntent.setAction("XXX.XXX.XXX");
          Intent eintent = new Intent(getExplicitIntent(mContext,mIntent));
          context.startService(eintent);

          posted on 2016-05-31 13:19 天宇恒星 閱讀(247) 評論(0)  編輯  收藏 所屬分類: Android
          主站蜘蛛池模板: 桃园市| 肃宁县| 巴里| 大厂| 阜阳市| 聊城市| 南皮县| 宜宾市| 鸡东县| 济阳县| 新化县| 红河县| 甘肃省| 林西县| 许昌县| 桑植县| 大方县| 卓尼县| 乐东| 彰化市| 莎车县| 息烽县| 金平| 太康县| 察哈| 宜兰县| 弋阳县| 河间市| 雷州市| 皮山县| 巩义市| 遵义县| 溧阳市| 稻城县| 彭水| 怀仁县| 来安县| 莱西市| 青州市| 汕尾市| 嘉鱼县|