2016-12-04 84 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); 
相关问题