2017-08-26 24 views
2

私はバックグラウンドでアプリを実行するためにジオフェンスを使用しています。デバイスの再起動後は動作しません。 cn1でデバイスを再起動した後でもどうすれば動作させることができますか?私はcn1プッシュ通知がそれを達成するためにRECEIVE_BOOT_COMPLETED権限を使用すると思います。私の場合のように他の目的のためにそうするための組み込み関数をいくつか持っていますか?デバイスの再起動後にバックグラウンドでアプリを自動実行

コード:

Geofence gf = new Geofence("test", loc, 100, 100000); 
LocationManager.getLocationManager().addGeoFencing(GeofenceListenerImpl.class, gf); 



public class GeofenceListenerImpl implements GeofenceListener { 
    @Override 
    public void onExit(String id) { 
    } 

    @Override 
    public void onEntered(String id) { 
     if(Display.getInstance().isMinimized()) { 
      Display.getInstance().callSerially(() -> { 
       Dialog.show("Welcome", "Thanks for arriving", "OK", null); 
      }); 
     } else { 
      LocalNotification ln = new LocalNotification(); 
      ln.setId("LnMessage"); 
      ln.setAlertTitle("Welcome"); 
      ln.setAlertBody("Thanks for arriving!"); 
      Display.getInstance().scheduleLocalNotification(ln, 10, LocalNotification.REPEAT_NONE); 
     } 
    }  
} 

更新:CN1におけるネイティブインタフェースを介してマニフェストに次のように統合する方法

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

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:roundIcon="@mipmap/ic_launcher_round" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity android:name=".MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <receiver 
     android:enabled="true" 
     android:exported="true" 
     android:name=".YourActivityRunOnStartup"> 

     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
     </intent-filter> 
    </receiver> 
</application> 

答えて

0

あり、起動時に自動的に再登録するこのような機能のためのオプションを提供について議論があったが、それはすべてが希望されない場合があります追加の権限が必要になります。

これについては、Androidライブラリ内のネイティブコードを使用してこれを呼び出すようにした最後の人物として私が知る限り、RFEはありませんが、コードを共有しているとは思いません。

+0

okネイティブコードを使用します。ジオフェンスメソッドに関する質問があります。アプリがbgにあるか、または削除されたときのほとんどの場合、onEntered()メソッドが呼び出されます。しかし、onExit()は頻繁に呼び出されます。 onExitメソッドの目的は何ですか? – beck

+0

フェンスゾーンを離れるときは、onEnterの反対です。 –

+0

マニフェストにレシーバがある起動時にアプリケーションを自動再登録するために、アンドロイドネイティブで作業しました。私はcn1でそれをどうやってやるのかよくわからないのですか? (PS。コード内で動的にレシーバーを登録することはうまくいきません)上記の質問の更新を見てください。 – beck

関連する問題