我正在尝试发送广播,但onreceive()
从未被调用。
该服务打印以下Toast消息(when Bluetooth state is Change
)-
“已创建服务”
这对于filter1
很好,但是对于filter2
:
该服务仅打印以下Toast消息(when Bluetooth state未更改
)-
“已创建服务”
public class DataProcessService extends Service {
public IBinder onBind(Intent intent)
{
return null;
}
@Override
public void onCreate()
{
Toast.makeText(this, "Service created", Toast.LENGTH_LONG).show();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();
IntentFilter filter1, filter2;
filter1 = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);
if ((intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, -1) == BluetoothAdapter.STATE_ON)
&& !getSetting("STATUS", "").equals("Connected") &&
!Common.isAppInForeground(getApplicationContext()))
{
filter2 = new IntentFilter("true");
}
else
filter2 = new IntentFilter("false");
this.registerReceiver(mReceiver, filter1);
this.registerReceiver(mReceiver, filter2);
sendBroadcast(intent);
return START_STICKY;
}
//The BroadcastReceiver that listens for bluetooth broadcasts
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
//String action = intent.getAction();
//BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
Toast.makeText(DataProcessService.this, "BT change received !", Toast.LENGTH_LONG).show();
if(intent.getAction().equals("true"))
{
Toast.makeText(DataProcessService.this, "Service in Background", Toast.LENGTH_LONG).show();
}
if(intent.getAction().equals("false"))
{
Toast.makeText(DataProcessService.this, "Service in foreground", Toast.LENGTH_LONG).show();
}
if ((intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, -1) == BluetoothAdapter.STATE_OFF) ||
!getSetting("STATUS", "").equals("Connected") || Common.isAppInForeground(getApplicationContext())) {
Toast.makeText(DataProcessService.this, "Service Self Stop", Toast.LENGTH_LONG).show();
stopSelf();
}
else
{
Toast.makeText(DataProcessService.this, "Service Continues", Toast.LENGTH_LONG).show();
}
}
};
@Override
public void onDestroy()
{
this.unregisterReceiver(mReceiver);
Toast.makeText(this, "Background work Stopped", Toast.LENGTH_LONG).show();
}
public String getSetting(String key, String def) {
SharedPreferences settings;
try
{
settings = getSharedPreferences("IDDLPref", 0);
return settings.getString(key, def);
}
catch(Exception e)
{
e.printStackTrace();
}
return "";
}
}
这是因为filter2根据其值为动作“true”或“false”注册。当Bluetooth状态因filter1而改变时,它可以工作,而当它不改变时,它根本不工作,因为filter2被注册到未发生的事情上。如果你想让它在没有蓝牙改变的情况下工作,你需要广播:
sendBroadcast(new Intent("true")) // or "false" instead of "true", depending on the IntentFilter's value, or both if you want to make sure it will be called.
我正在开发https://github.com/mauron85/cordova-plugin-mauron85-background-geolocation-phoneGapbuild 基本上,这是一个cordova插件,它使用LocationManager向WebView发送位置。 服务也有自己的进程(android:process=“:remote”)。因此,服务将服务主要活动(线程)杀死或
我的应用程序通过使用“系统警报”对话框的服务创建聊天头。现在,我在这个对话框中有一些图像,我想用一个intent来分享它们。 但是我得到的错误是: android.util.AndroidRuntimeExcture:从活动上下文外部调用starActive()需要FLAG_ACTIVITY_NEW_TASK标志。这真的是你想要的吗? 如何解决这个问题? Im用于共享图像的代码是:
据我所知,Toast通知不仅适用于Windows10,而且适用于Windows8。这适用于制作服务吗?我要做的事情可能吗? 目前,我打算制作一个单独的应用程序,它只是为了发送一个通知而被调用,但这似乎是矫枉过正。
我要做的是在Dropzone之前。js将删除的图像发送到服务器,会出现一个带有裁剪器的模式。js(fengyuanchen脚本),用户可以裁剪图像,当图像被裁剪时,用Dropzone发送。js连接到服务器。 因此,当我用函数fileToBase64更改#cropbox的图像src,并用函数croper('replace')替换裁剪器的图像时,它会一直显示默认值。jpg图片,而不是用户上传的新图片
我写的Alexa技能有以下设置: 意图架构 样本话语 当Alexa听到: alexa让我的应用程序清除我的购物清单 正如预期的那样,发送了正确的ClearGrocerieContent。然而,当Alexa听说: alexa让我的应用程序清除购物清单 改为发送GetGrocerieContent。 这个问题不能被服务模拟器复制,它可以正常工作。只有在演讲时,它才会变得混乱,尽管(根据历史)Alexa
我正在尝试使用不同的应用程序附加图像,代码如下: 附加的图像是使用以下代码生成的: 但当我试图打开GMAIL与此意图,只有文本显示应用程序与错误:. 我错过了什么? 编辑 这是另一个解决方案:android。操作系统。FileUrieExposedException:文件。jpg通过ClipData曝光了app之外的内容。项目getUri()