1

활동을 시작하고 싶습니다 (ON_BOOT_COMPLETED). 이제 나는 하나의 이상한 문제에 직면 해있다.안드로이드에서 권한을 정의하는 더 좋은 방법은 무엇입니까?

내가 응용 프로그램 태그 외부의 Receiver 태그 외부에서 부트 권한을 지정하면. 활동이 시작됩니다.

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="16" /> 
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="com.example.broadcaststaticdemo.MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <receiver android:name="com.example.broadcaststaticdemo.StartAppOnBoot" > 
<intent-filter> 
    <action android:name="android.intent.action.BOOT_COMPLETED" /> 
    <category android:name="android.intent.category.HOME" /> 
</intent-filter> 

을 다음은 내가 수신기 태그 내 활동 내부의 권한을 지정하면 것은 시작하지 않습니다. 내가 완전히 잘 작동 내 다른 응용 프로그램에서 두 번째 방법 (수신기 태그 내부 권한)를 사용하고 있지만

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.broadcaststaticdemo" 
android:versionCode="1" 
android:versionName="1.0" > 
<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="16" /> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="com.example.broadcaststaticdemo.MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <receiver android:name="com.example.broadcaststaticdemo.StartAppOnBoot" 
     android:permission="android.permission.RECEIVE_BOOT_COMPLETED" > 
<intent-filter> 
    <action android:name="android.intent.action.BOOT_COMPLETED" /> 
    <category android:name="android.intent.category.HOME" /> 
</intent-filter> 

다음과 같습니다. 그래서 난 응용 프로그램 수준 및 수신기 수준에서 권한을 지정하는 차이점은 혼란 스러워요. 나는 그들이 언급 한 안드로이드 문서를 보았다.

브로드 캐스터가 브로드 캐스트 리시버에 메시지를 보내기 위해 필요로하는 허가의 이름. 이 속성이 설정되지 않은 경우 요소의 권한 속성으로 설정된 권한이 브로드 캐스트 리시버에 적용됩니다. 어느 속성도 설정되어 있지 않은 경우, 수신자는 허가에 의해 보호되지 않습니다. 우리는 어디에서든지 지정할 수 있습니다. 도움이 될 것입니다

+1

브로드 캐스트를 전송할 수 있도록하기 위해 완료된 브로드 캐스트 및 다른 사람이 필요로하는 권한을받는 데 대한 혼란이 있다고 생각합니다. 이것은 사용 권한과 관련이없는 서로 다른 두 가지 사용 사례입니다. –

+0

@Daniel은 부팅 완료 브로드 캐스트를 수신 할 수있는 권한과 브로드 캐스트를 보낼 수 있도록 다른 사람에게 부여한 사용 권한을 통해 무엇을 의미하는지 더 자세히 설명 할 수 있습니다. – CodingRat

답변

2

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />을 사용하면 응용 프로그램에 RECEIVE_BOOT_COMPLETE 권한이 필요한 인터페이스와 통신 할 수 있습니다.

<receiver>android:permission 속성을 할당하면 브로드 캐스트 리시버와 인터페이스하는 항목에 RECEIVE_BOOT_COMPLETE 권한이 필요하다는 것을 알리는 것입니다. 그것에 대한 자세한 정보는 여기 http://developer.android.com/guide/topics/manifest/receiver-element.html#prmsn입니다.

관련 문제