Android开发, Service Intent must be explicit: Intent

java.lang.IllegalArgumentException: Service Intent must be explicit

意思是服务必须得显式的调用

解决办法 使用如下代码
``
public static Intent createExplicitFromImplicitIntent(Context context, Intent implicitIntent) {
// Retrieve all services that can match the given intent
PackageManager pm = context.getPackageManager();
List 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;
}

``
加入新代码转化函数后的用法 这样即可以解决问题

   Intent intent = new Intent();
    intent.setAction("actionname.aidl.bank.BankService");

    Intent intent1  = new Intent(createExplicitFromImplicitIntent(context,intent));
    bindService(intent1,conn,BIND_AUTO_CREATE);

你可能感兴趣的:(Android开发, Service Intent must be explicit: Intent)