2016-03-26 23 views
1

BootComplete'ı kullandım ve izin verdim ve yine de otomatik başlatılamıyor, sonra uyandırma kilidini kullanmaya çalışıyorum ama işe yaramaz. Ayrıca, bir hizmet olarak yapmaya çalışıyorum ama telefonumda servis açılmıyor. Cevapsız bir şey var mı? Benim tezahür dosyasındaYeniden başlattıktan sonra Android'de uygulamamı nasıl otomatik başlatabilirim?

 public class BootComplete extends BroadcastReceiver { 

     @Override 
     public void onReceive(Context context, Intent intent) { 

{ 
      // This is the Intent to deliver to our service. 
      Intent serviceIntent = new Intent(context, AutoStartUp.class); 
      context.startService(serviceIntent); 

     } 
    } 

public class AutoStartUp extends Service { 

    @Override 
    public IBinder onBind(Intent intent) { 
     return null; 
    } 

    @Override 
    public void onCreate() { 

     super.onCreate(); 
     Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show(); 
     // do something when the service is created 
    } 

} 

: Eğer OnReceive içinde niyetinde olursa olsun

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

<service android:name=".SimpleWakefulReceiver"> 
      <intent-filter> 
       <action android:name="com.example.SimpleWakefulReceiver"/> 
      </intent-filter> 
     </service> 

     <receiver 
      android:name=".MainActivity$BootComplete" 
      android:enabled="true" 
      android:exported="false"> 
      <intent-filter> 
       <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      </intent-filter> 
     </receiver> 

     <service android:name=".AutoStartUp"> 
     </service> 
+1

dışında blok olmalıdır gerekiyorsa, kurulumdan sonra en az bir kez başlatmak için uygulamanızda bir 'Activity' gerek _stopped_ durumundan çıkarmak için. O zamana kadar, Alıcınız çalışmayacak. Ayrıca, alıcınızın da dışa aktarılması gerekiyor. Yani, 'exported' özniteliğini 'true' olarak ayarlayın veya kaldırın. –

+0

evet doğru mike; dışa aktarılmış ve etkinleştirilmiş bağlantıları kaldır; Ayrıca alıcıları kullanarak faaliyet başlatırken bu bayrağa ihtiyaç duyarsınız; ** intent.addFlags (Intent.FLAG_ACTIVITY_NEW_TASK); ** – DJphy

cevap

0

Do -

public class BootupReceiver extends BroadcastReceiver { 
@Override 
public void onReceive(Context context, Intent intent) { 

    try { 
     Thread.sleep(5000); 
    } catch (InterruptedException e) { 
     e.printStackTrace(); 
    } 
    Log.e("BOOTUP", "received notification ......................"); 
    if(intent.getAction().equalsIgnoreCase(Intent.ACTION_BOOT_COMPLETED)) 
    { 
     Log.e("BOOTUP","RECEIVED BOOT NOTIFICATION ........"); 
     Intent start_service = new Intent(context,MainService.class); 
     context.startService(start_service); 
    } 
} 

Manifest Add-On'un içinde

<receiver 
     android:name=".AutoStart" 
     android:enabled="true" 
     android:exported="true"> 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
     </intent-filter> 
    </receiver> 

izne eklemek

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

Ayrıca en az bir kez etkinliklerden uygulamayı başlatmak için ve blok API 3.1 itibariyle tezahür

İlgili konular