2017-01-31 2 views
2

これはかなり一般的な質問ですが、私は迷っています。私は要件を徹底的に満たしていると思う。私は、電話の再起動時にBroadcastReceiverに何かをさせたい。 (ブート用)ブート/ブロードキャストレシーバの再起動の問題

私BroadcastReceiver:私のマニフェストの 'マニフェスト' タグ内

public class BootReceiver extends BroadcastReceiver 
{ 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     Log.d("BootupReceiver", "Refreshing alarms."); 
    } 
} 

:私のマニフェストの 'アプリケーション' タグ内

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> 

<receiver 
    android:name=".receivers.BootReceiver" 
    android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> 
    <intent-filter> 
     <action android:name="android.intent.action.BOOT_COMPLETED"/> 
    </intent-filter> 
</receiver> 

後私はそれを閉じてから、手動で再起動します。私はが状態を停止したとは思わないが問題です。

さらに

私はこの怪物の様々な組み合わせを試してみました:

<receiver 
     android:name=".receivers.BootReceiver" 
     android:permission="android.permission.RECEIVE_BOOT_COMPLETED" 
     android:enabled="true" 
     android:exported="true"> 
     <intent-filter android:priority="999"> 
      <action android:name="android.intent.action.BOOT_COMPLETED"/> 
      <action android:name="android.intent.action.REBOOT"/> 
      <category android:name="android.intent.category.DEFAULT"/> 
      <category android:name="android.intent.category.HOME" /> 
     </intent-filter> 
</receiver> 

受信名を参照する場合、私はまた、相対一方の代わりに絶対的なパッケージ名を使用して試みました。

さらに私は、MainActivityと上記のBroadcastReceiverだけで、(怒って)働いている単純なスタンドアロンのアプリケーションを作成しました。

私はBootReceiverが起動しない、任意の既知のインスタンスがありモトGとサムスンギャラクシーエッジ7

でこれをテストしてみましたか?私のコードで何がうまくいかないのはどんな傾向ですか?

私はunansweredという同様の質問を見つけました。

EDIT

私は、さらに手動REBOOTの意図を発射する広告シェルを使用して試してみました。まだ成功していない。

EDIT 2

としては、完全なマニフェストを要求しました。 REDACTEDと表示された場合は、機密情報を削除しました。

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.REDACTED.REDACTED"> 

<uses-permission android:name="android.permission.WAKE_LOCK"/> 
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> 
<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

<application 
    android:name=".REDACTEDApplication" 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:largeHeap="true" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 

    <activity 
     android:name=".ui.activities.SplashActivity" 
     android:label="@string/app_name" 
     android:screenOrientation="portrait"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN"/> 
      <category android:name="android.intent.category.LAUNCHER"/> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name=".ui.activities.InitialActivity" 
     android:screenOrientation="portrait"/> 
    <activity 
     android:name=".ui.activities.LoginActivity" 
     android:screenOrientation="portrait"/> 
    <activity 
     android:name=".ui.activities.CreateAccountActivity" 
     android:screenOrientation="portrait"/> 
    <activity 
     android:name=".ui.activities.MainActivity" 
     android:screenOrientation="portrait" 
     android:theme="@style/AppTheme.NoActionBar"> 
    </activity> 
    <activity 
     android:name=".ui.activities.VideoPlayerActivity" 
     android:screenOrientation="landscape"/> 
    <activity 
     android:name=".ui.activities.DisclaimerActivity" 
     android:screenOrientation="portrait"/> 
    <activity 
     android:name=".ui.activities.EPWebViewActivity" 
     android:screenOrientation="portrait"/> 
    <activity 
     android:name=".ui.activities.EscapePlanActivity" 
     android:screenOrientation="portrait"/> 
    <activity 
     android:name=".ui.activities.EscapeInfoActivity" 
     android:screenOrientation="portrait"/> 
    <activity 
     android:name=".ui.activities.EscapeSessionActivity" 
     android:screenOrientation="portrait"/> 
    <activity 
     android:name=".ui.activities.EscapeDetailActivity" 
     android:screenOrientation="portrait"/> 

    <meta-data 
     android:name="io.fabric.ApiKey" 
     android:value="REDACTED"/> 

    <activity 
     android:name=".ui.activities.RemindersActivity" 
     android:screenOrientation="portrait"> 
    </activity> 

    <receiver android:name=".receivers.NotificationsReceiver"/> 

    <receiver 
     android:name=".receivers.BootReceiver" 
     android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED"/> 
     </intent-filter> 
    </receiver> 

</application> 

EDIT 3

私は別のレシーバを追加しようとしたが、Androidのメーカーはそれを生成しています。まだ運がありません。

ADBシェルを使用して、アプリケーションでBOOT_COMPLETEDを発生させます。そこにも成功はありません。

+1

あなたがすべてのクラスをインポートしたことを確認してください。そして、メディファーストクラスのパスには、 –

+1

という完全なマニフェストを投稿してください。 –

+0

@Rod_Algonquin掲示される。 – Cian

答えて

0

APKのクリーニング、再構築、再生成後、現在動作しています。スタジオが古いAPKをキャッシュしていたかどうか、または私が誤解して通常のビルドを混乱させるかどうかはわかりませんが、受信機は現在動作しています。

関連する問題