मैं अनुप्रयोगों को बाध्यकारी से रोकने से रोकने की कोशिश कर रहा हूं यदि वे एक ही प्रमाणपत्र के साथ उसी प्रमाणपत्र के साथ हस्ताक्षरित नहीं हैं। इसके लिए मैंने एक तत्व का उपयोग करके मैनिफेस्ट (सेवा युक्त एप्लिकेशन के आवेदन) में एक नई अनुमति घोषित की है और सुरक्षा को सेट किया है जैसा कि दिखाए गए हस्ताक्षर के लिए नई अनुमति का स्तर है। अनुमति विशेषता तो यह है कि इस नए अनुमति सेवा करने के लिए बाध्य करने की आवश्यकता है:एंड्रॉइड का उपयोग कर समस्या: सुरक्षाLevel = "हस्ताक्षर"
<permission android:name="jp.co.abc.android.OMRSSettings.permission.Access"
android:protectionLevel="signature"></permission>
<uses-permission android:name="jp.co.abc.android.OMRSSettings.permission.Access"/>
फिर, सेवा के लिए प्रकट घोषणा में, मैं एक एंड्रॉयड का उपयोग करें।
<service android:name="jp.co.xyz.bluetooth.profile.TIPServer"
android:permission="jp.co.abc.android.OMRSSettings.permission.Access" >
<intent-filter>
<action android:name="jp.co.xyz.bluetooth.api.ICommonResultCallback" />
<action android:name="jp.co.xyz.bluetooth.api.ITimeServer" />
</intent-filter>
मैं इस सेवा को किसी अन्य एप्लिकेशन से एक्सेस करने का प्रयास करता हूं। इस दूसरे एप्लिकेशन के मैनिफेस्ट में, मैं <uses-permission android:name="jp.co.abc.android.OMRSSettings.permission.Access"/>
जोड़ता हूं और पहले एप्लिकेशन की सेवा से जुड़ने की कोशिश करता हूं।
लेकिन मुझे निम्न अपवाद मिलता है।
01-02 00:06:54.531: INFO/PowerManagerService(425): Start Light.setBrightness(), [20], [3]
01-02 00:06:56.473: INFO/PowerManagerService(425): Start Light.setBrightness(), [130], [3]
01-02 00:06:58.055: WARN/dalvikvm(4956): threadid=1: thread exiting with uncaught exception (group=0x40b70390)
01-02 00:06:58.055: WARN/ActivityManager(425): Permission Denial: Accessing service ComponentInfo{jp.co.abc.android.omrsettings/jp.co.xyz.bluetooth.profile.TIPServer} from pid=4956, uid=10158 requires jp.co.abc.android.OMRSSettings.permission.Access
01-02 00:06:58.065: ERROR/AndroidRuntime(4956): FATAL EXCEPTION: main
java.lang.SecurityException: Not allowed to bind to service Intent { act=jp.co.xyz.bluetooth.api.ITimeServer }
at android.app.ContextImpl.bindService(ContextImpl.java:1187)
at android.content.ContextWrapper.bindService(ContextWrapper.java:370)
at jp.co.abc.middleware.tip.LeTimeServerProfile.startTimeServer(LeTimeServerProfile.java:45)
at jp.co.abc.tip.TimeActivity.onClick(TimeActivity.java:49)
at android.view.View.performClick(View.java:3511)
at android.view.View$PerformClick.run(View.java:14133)
at android.os.Handler.handleCallback(Handler.java:605)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4507)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554)
at dalvik.system.NativeStart.main(Native Method)
01-02 00:06:58.095: WARN/ActivityManager(425): Force finishing activity jp.co.abc.tip/.TimeActivity
कोई मुझे पता है कि मैं क्यों अनुमति मुद्दे हैं, हालांकि मैं सही ढंग से मेरी दूसरी एप्लिकेशन के प्रकट में <uses-permission android:name="jp.co.abc.android.OMRSSettings.permission.Access"/>
घोषित तो कृपया कर सकते हैं।
किसी भी मदद की बहुत सराहना की जाती है।
संपादित
सुधार lenik शामिल करने के लिए संशोधित उसके जवाब में सुझाव दिया।
यदि आप 'एंड्रॉइड: सुरक्षाLevel = "हस्ताक्षर" को प्रकट करते हैं तो आप सेवा से जुड़ सकते हैं? – lenik
यदि मैं एंड्रॉइड को हटाता हूं: सुरक्षा अनुप्रयोग: पहले आवेदन के मैनिफेस्ट से "हस्ताक्षर", मैं दूसरे एप्लिकेशन – user1400538