12

Nexus 7 タブレットに次のコマンドを発行しています。

adb.exe -s 015d2109567231a0f shell am startservice -n com.packagename/.ExServiceName --ei port 59777

そして取得:

Starting service: Intent { cmp=com.packagename/.ExServiceName (has extras) }
java.lang.SecurityException: Caller uid=2000 is not privileged to communicate with user=-2
    at android.os.Parcel.readException(Parcel.java:1425)
    at android.os.Parcel.readException(Parcel.java:1379)
    at android.app.ActivityManagerProxy.startService(ActivityManagerNative.java:2648)
    at com.android.commands.am.Am.runStartService(Am.java:415)
    at com.android.commands.am.Am.run(Am.java:111)
    at com.android.commands.am.Am.main(Am.java:82)
    at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
    at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:235)
    at dalvik.system.NativeStart.main(Native Method)

タブレットにシステム アップデートを適用するまでは、問題なく動作していました。

現在のタブレット情報:

Model number: Nexus 7
Android version: 4.2
Kernel version: 3.1.10-g22b4fcd

サービス マニフェスト:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.packagename"
    android:versionCode="1"
    android:versionName="1.0">

    <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" />
    <uses-permission android:name="android.permission.INTERNET"/>

    <application android:label="@string/app_name"
        android:icon="@drawable/ic_launcher"
        android:theme="@style/AppTheme">

        <service android:name=".ExServiceName" android:exported="true"></service>

    </application>

</manifest>

私はの下で開発していますWindows 7 x64

どのような種類の例外もスローせずに、サービスがインテントを正常に受け入れるようにする方法を教えてください。

ありがとう、
コンラッド

4

4 に答える 4

24

バージョンがAndroid 4.2のGalaxy Nexusでも同じ例外が発生しました。

以下のコマンドでサービスの起動に成功しました。

am startservice --user 0 -a <action>
于 2012-12-14T10:54:42.503 に答える
3

インターネットで多くの検索を行った後、Koji Hisano の非常に役立つ投稿を使用して、システム バーを表示することができました。

am startservice --user 0 -n com.android.systemui/.SystemUIService

-a オプションを使用すると、次のメッセージが表示されました。

エラーはみつかりません; サービスは開始されていません。

于 2013-10-15T04:41:11.750 に答える
1

root化された電話でサービスを開始することもできます:

adb.exe -s 015d2109567231a0f shell su -c "am startservice -n com.packagename/.ExServiceName --ei port 59777"
于 2013-07-08T09:04:05.503 に答える
0

私にとってうまくいったのは
、Android Studioターミナルを開いてから

adb shell
run-as com.app_package_name
am startservice --user 0 -n com.app_package_name/.service_package_name.ServiceName  
于 2017-08-08T13:37:43.097 に答える