欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android 出現(xiàn)的警告(Service Intent must be explicit)解決辦法詳解

 更新時(shí)間:2017年04月14日 14:24:59   作者:vrix  
這篇文章主要介紹了Android 出現(xiàn)的警告(Service Intent must be explicit)解決辦法詳解的相關(guān)資料,需要的朋友可以參考下

Android 出現(xiàn)的警告(Service Intent must be explicit)解決辦法詳解

有些時(shí)候我們使用Service的時(shí)需要采用隱私啟動的方式,但是Android 5.0一出來后,其中有個(gè)特性就是Service Intent  must be explitict,也就是說從Lollipop開始,service服務(wù)必須采用顯示方式啟動。

而android源碼是這樣寫的(源碼位置:sdk/sources/android-21/android/app/ContextImpl.java):

private void validateServiceIntent(Intent service) {
  if (service.getComponent() == null && service.getPackage() == null) {
   if (getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.LOLLIPOP) {
    IllegalArgumentException ex = new IllegalArgumentException(
      "Service Intent must be explicit: " + service);
    throw ex;
   } else {
    Log.w(TAG, "Implicit intents with startService are not safe: " + service
      + " " + Debug.getCallers(2, 3));
   }
  }
 }

既然,源碼里是這樣寫的,那么這里有兩種解決方法:

1、設(shè)置Action和packageName:

參考代碼如下:

Intent mIntent = new Intent();
mIntent.setAction("XXX.XXX.XXX");//你定義的service的action
mIntent.setPackage(getPackageName());//這里你需要設(shè)置你應(yīng)用的包名
context.startService(mIntent);

此方式是google官方推薦使用的解決方法。

在此附上地址供大家參考:http://developer.android.com/goo ... tml#billing-service,有興趣的可以去看看。

2、將隱式啟動轉(zhuǎn)換為顯示啟動:--參考地址:http://stackoverflow.com/a/26318757/1446466

public static Intent getExplicitIntent(Context context, Intent implicitIntent) {
  // Retrieve all services that can match the given intent
  PackageManager pm = context.getPackageManager();
  List<ResolveInfo> resolveInfo = pm.queryIntentServices(implicitIntent, 0);
  // Make sure only one match was found
  if (resolveInfo == null || resolveInfo.size() != 1) {
   return null;
  }
  // Get component info and create ComponentName
  ResolveInfo serviceInfo = resolveInfo.get(0);
  String packageName = serviceInfo.serviceInfo.packageName;
  String className = serviceInfo.serviceInfo.name;
  ComponentName component = new ComponentName(packageName, className);
  // Create a new intent. Use the old one for extras and such reuse
  Intent explicitIntent = new Intent(implicitIntent);
  // Set the component to be explicit
  explicitIntent.setComponent(component);
  return explicitIntent;
 }

調(diào)用方式如下:

Intent mIntent = new Intent();
mIntent.setAction("XXX.XXX.XXX");
Intent eintent = new Intent(getExplicitIntent(mContext,mIntent));
context.startService(eintent);

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • 超實(shí)用的android自定義log日志輸出工具類

    超實(shí)用的android自定義log日志輸出工具類

    這篇文章主要為大家詳細(xì)介紹了一個(gè)超實(shí)用的android自定義log日志輸出工具類,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • Android自定義拋出異常的方法詳解

    Android自定義拋出異常的方法詳解

    這篇文章主要給大家介紹了關(guān)于Android自定義拋出異常的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對各位Android開發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Android集成新浪微博第三方登錄的方法

    Android集成新浪微博第三方登錄的方法

    這篇文章主要介紹了Android集成新浪微博第三方登錄的方法,完整講述了Android集成新浪微博第三方登錄的詳細(xì)步驟與實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2015-01-01
  • Android通話默認(rèn)打開揚(yáng)聲器的方法

    Android通話默認(rèn)打開揚(yáng)聲器的方法

    這篇文章主要介紹了Android通話默認(rèn)打開揚(yáng)聲器的方法.小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-08-08
  • Android編寫Router路由框架實(shí)例過程詳解

    Android編寫Router路由框架實(shí)例過程詳解

    為什么要用路由框架,路由框架哪些好處等等,在此就不做解釋
    最常用的框架是ARouter,那是不是可以自己寫一個(gè)路由框架呢,不參考ARouter的方式
    2023-04-04
  • Android音頻可視化開發(fā)案例說明

    Android音頻可視化開發(fā)案例說明

    最近移植Android,當(dāng)Android能夠在設(shè)備上面運(yùn)行之后,首先想到的是讓音頻設(shè)備跑起來?!皼]有聲音,再好的戲也出不來”接下來介紹Android音頻可視化開發(fā)流程
    2012-12-12
  • 詳解Android 圖片的三級緩存及圖片壓縮

    詳解Android 圖片的三級緩存及圖片壓縮

    本篇文章主要介紹了Android 圖片的三級緩存 及 圖片壓縮,這里整理了詳細(xì)的代碼,有需要的小伙伴可以參考下。
    2016-12-12
  • 解決Android V7后自定義Toolbar、ActionBar左側(cè)有空白問題

    解決Android V7后自定義Toolbar、ActionBar左側(cè)有空白問題

    這篇文章主要介紹的Android V7后自定義Toolbar、ActionBar左側(cè)有空白問題的解決方法,需要的朋友可以參考下
    2017-04-04
  • Android編程調(diào)用紅外線遙控功能示例

    Android編程調(diào)用紅外線遙控功能示例

    這篇文章主要介紹了Android編程調(diào)用紅外線遙控功能,結(jié)合實(shí)例形式分析了Android紅外線功能的相關(guān)組件調(diào)用與布局操作實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-08-08
  • flutter的導(dǎo)航和路由使用示例詳解

    flutter的導(dǎo)航和路由使用示例詳解

    這篇文章主要為大家介紹了flutter的導(dǎo)航和路由使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12

最新評論