温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

SecurityException: Unable to start service Intent

发布时间:2020-08-04 07:02:40 来源:网络 阅读:883 作者:鹭明 栏目:移动开发

如果遇到报下面这个错误:
java.lang.SecurityException: Unable to start service Intent { flg=0x20 cmp=com.ucar.app/cn.jpush.android.service.DaemonService }: Unable to launch app com.ucar.app/10101 for service Intent { cmp=com.ucar.app/cn.jpush.android.service.DaemonService }: user 0 is restricted
at android.app.ContextImpl.startServiceCommon(ContextImpl.java:1769)
at android.app.ContextImpl.startService(ContextImpl.java:1742)
at android.content.ContextWrapper.startService(ContextWrapper.java:527)
at cn.jpush.android.service.l.run(Unknown Source)
at java.lang.Thread.run(Thread.java:818)

则是当前版本的极光推送sdk在当前手机系统里不能支持启动服务,这个是旧极光推送SDK存在对安卓8.0以上手机不适配的问题,目前极光新版本SDK已经没那问题了,所以   解决办法就是替换成最新的极光SDK

去官网下载下载最新版本的极光推送SDK,下载地址:
https://docs.jiguang.cn/jpush/resources/

把下载下来的lib里面所有东西都拷贝到自己项目对应的lib文件里并进行依赖,

SecurityException: Unable to start service Intent
把res 里文件拷贝到对应项目res文件里(注意检查自己项目res里面文件跟它不要同名,否则会被替换掉,造成自己项目资源文件丢失错误)
SecurityException: Unable to start service Intent

然后在AndroidManifest里配置如下代码:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="您应用的包名"
android:versionCode="316"
android:versionName="3.1.6"

<uses-sdk android:minSdkVersion="9" android:targetSdkVersion="23" />

<!-- Required -->
<permission
    android:name="您应用的包名.permission.JPUSH_MESSAGE"
    android:protectionLevel="signature" />

<!-- Required -->
<uses-permission android:name="您应用的包名.permission.JPUSH_MESSAGE" />
<uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

<!-- Optional. Required for location feature -->
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <!-- 用于开启 debug 版本的应用在 6.0 系统上的层叠窗口权限 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.VIBRATE" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:name="Your Application Name">

    <!-- Required SDK 核心功能-->
    <!-- 可配置 android:process 参数将 PushService 放在其他进程中 -->
    <service
        android:name="cn.jpush.android.service.PushService"
        android:enabled="true"
        android:exported="false" >
        <intent-filter>
            <action android:name="cn.jpush.android.intent.REGISTER" />
            <action android:name="cn.jpush.android.intent.REPORT" />
            <action android:name="cn.jpush.android.intent.PushService" />
            <action android:name="cn.jpush.android.intent.PUSH_TIME" />
        </intent-filter>
    </service>

<!-- since 3.0.9 Required SDK 核心功能-->
    <provider
        android:authorities="您应用的包名.DataProvider"
        android:name="cn.jpush.android.service.DataProvider"
        android:exported="true"
    />

    <!-- since 1.8.0 option 可选项。用于同一设备中不同应用的 JPush 服务相互拉起的功能。 -->
    <!-- 若不启用该功能可删除该组件,或把 enabled 设置成 false ;App 不会被其他 App 拉起,但会拉起其他的 App。 -->
     <service
         android:name="cn.jpush.android.service.DaemonService"
         android:enabled="true"
         android:exported="true">
         <intent-filter >
             <action android:name="cn.jpush.android.intent.DaemonService" />
             <category android:name="您应用的包名"/>
         </intent-filter>
     </service>

     <!-- since 3.1.0 Required SDK 核心功能-->
      <provider
           android:authorities="您应用的包名.DownloadProvider"
           android:name="cn.jpush.android.service.DownloadProvider"
           android:exported="true"
       />

    <!-- Required SDK 核心功能-->
    <receiver
        android:name="cn.jpush.android.service.PushReceiver"
        android:enabled="true" >
      <intent-filter android:priority="1000">
            <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" />
            <category android:name="您应用的包名"/>
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.USER_PRESENT" />
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
        </intent-filter>
        <!-- Optional -->
        <intent-filter>
            <action android:name="android.intent.action.PACKAGE_ADDED" />
            <action android:name="android.intent.action.PACKAGE_REMOVED" />
            <data android:scheme="package" />
        </intent-filter>
    </receiver>

    <!-- Required SDK 核心功能-->
    <activity
        android:name="cn.jpush.android.ui.PushActivity"
        android:configChanges="orientation|keyboardHidden"
        android:theme="@android:style/Theme.NoTitleBar"
        android:exported="false" >
        <intent-filter>
            <action android:name="cn.jpush.android.ui.PushActivity" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="您应用的包名" />
        </intent-filter>
    </activity>
    <!-- SDK 核心功能-->
    <activity
        android:name="cn.jpush.android.ui.PopWinActivity"
        android:configChanges="orientation|keyboardHidden"
        android:exported="false"
        android:theme="@style/MyDialogStyle">
        <intent-filter>
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="您应用的包名" />
        </intent-filter>
    </activity>

    <!-- Required SDK 核心功能-->
    <service
        android:name="cn.jpush.android.service.DownloadService"
        android:enabled="true"
        android:exported="false" >
    </service>

    <!-- Required SDK 核心功能-->
    <receiver android:name="cn.jpush.android.service.AlarmReceiver" />

    <!-- Required since 3.0.7 -->
    <!-- 新的 tag/alias 接口结果返回需要开发者配置一个自定的广播 -->
    <!-- 该广播需要继承 JPush 提供的 JPushMessageReceiver 类, 并如下新增一个 Intent-Filter -->
    <receiver
        android:name="自定义 Receiver"
        android:enabled="true" 
        android:exported="false" >
        <intent-filter>
            <action android:name="cn.jpush.android.intent.RECEIVE_MESSAGE" />
            <category android:name="您应用的包名" />
        </intent-filter>
    </receiver>

    <!-- User defined. 用户自定义的广播接收器-->
     <receiver
         android:name="您自己定义的 Receiver"
         android:enabled="true"
         android:exported="false">
         <intent-filter>
             <!--Required 用户注册 SDK 的 intent-->
             <action android:name="cn.jpush.android.intent.REGISTRATION" />
             <!--Required 用户接收 SDK 消息的 intent-->
             <action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" />
             <!--Required 用户接收 SDK 通知栏信息的 intent-->
             <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" />
             <!--Required 用户打开自定义通知栏的 intent-->
             <action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" />
             <!-- 接收网络变化 连接/断开 since 1.6.3 -->
             <action android:name="cn.jpush.android.intent.CONNECTION" />
             <category android:name="您应用的包名" />
         </intent-filter>
     </receiver>

    <!-- User defined. 用户自定义 Receiver 接收被拉起回调-->
    <!-- 自定义 Receiver 组件,继承cn.jpush.android.service.WakedResultReceiver类,复写onWake(int wakeType)或 onWake(Context context, int wakeType)方法以监听被拉起 -->
     <receiver android:name="xx.xx.xx.MyWakedResultReceiver">
        <intent-filter>
            <action android:name="cn.jpush.android.intent.WakedReceiver" />
            <category android:name="${applicationId}" />
        </intent-filter>
      </receiver>

    <!-- Required. For publish channel feature -->
    <!-- JPUSH_CHANNEL 是为了方便开发者统计 APK 分发渠道。-->
    <!-- 例如: -->
    <!-- 发到 Google Play 的 APK 可以设置为 google-play; -->
    <!-- 发到其他市场的 APK 可以设置为 xxx-market。 -->
    <meta-data android:name="JPUSH_CHANNEL" android:value="developer-default"/>
    <!-- Required. AppKey copied from Portal -->
    <meta-data android:name="JPUSH_APPKEY" android:value="您应用的 Appkey"/>
</application>

</manifest>

最后在你自己项目的Application里配置初始化极光推送JPushInterface.init(this);

public class ExampleApplication extends Application {@Override
br/>@Override
super.onCreate();
JPushInterface.setDebugMode(true);
JPushInterface.init(this);
}
}

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI