2016-12-04 33 views
0

我想創建一個鬧鐘來創建通知。 將創建到意圖的應用程序是不一樣的,將收到它。在不同的應用程序之間創建鬧鐘

我有一個代碼,但它不工作,我不明白爲什麼:

的第一APP:

package io.github.alucas.alarmsend; 

import android.app.AlarmManager; 
import android.app.PendingIntent; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.widget.Toast; 

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Toast.makeText(this, "Create alarm", Toast.LENGTH_SHORT).show(); 

     final Intent intent = new Intent("io.github.alucas.alarmreceive.ALARM"); 
     PendingIntent alarmIntent = PendingIntent.getBroadcast(this, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

     AlarmManager alarmManager = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE); 
     alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 1000 * 5, alarmIntent); 

     Toast.makeText(this, "Send alarm", Toast.LENGTH_SHORT).show(); 
    } 
} 

第二應用:

package io.github.alucas.alarmreceive; 

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.widget.Toast; 

public class AlarmReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     Toast.makeText(context, "Receive alarm", Toast.LENGTH_SHORT).show(); 
    } 
} 

清單:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
      package="io.github.alucas.alarmreceive"> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     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:name="io.github.alucas.alarmreceive.AlarmReceiver" 
      android:enabled="true"> 
      <intent-filter> 
       <action android:name="io.github.alucas.alarmreceive.ALARM"/> 
      </intent-filter> 
     </receiver> 
    </application> 
</manifest> 

[編輯]

增加流動線固定我的問題:

intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); 
+0

報警將與您的應用程序才能正常工作。你爲什麼不收到警報,然後打電話給其他應用程序? – fbwnd

回答

0

你的第二個應用程序沒有活動。如果您向第二個應用添加活動,請在設備上進行安裝並運行,您的代碼將運行並且警報將傳遞到第二個應用程序。

+0

好的,我在第二個應用程序中添加一個活動。 現在它工作,但只有當第二個應用程序正在運行。我該如何解決這個問題?爲什麼我需要一個活動? – user3925873

+0

根據Android文檔,應用程序應具有四個入口點之一:活動,服務,內容提供者或廣播接收者。但出於某種原因,沒有活動(或服務)的應用程序無法工作,甚至無法在設備上的應用程序列表中看到。我沒有找到任何規格。所以......我們必須接受它作爲一個無證的功能(或錯誤)...無論如何,真正的應用程序必須有一個活動來做一些設置。順便說一下,你也可以嘗試創建一個服務。 – vmayorow

0

添加如下因素線解決我的問題:

intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);