假设我在服务中有一个可用的字符串test=“value”,并希望将其发送到我正在运行的mainactivity。如何安全地发送数据?我在寻找一个最简单的例子,其他应用程序看不到数据。当我看意图时,它会说:
广播是任何应用程序都可以接收的消息。系统为系统事件提供各种广播,例如当系统启动或设备开始充电时。您可以将广播发送到
但是,我只想将其发送到我的应用程序,因为它包含私人数据。在我的服务中,我尝试了:
Intent intent = new Intent(this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.putExtra(getString(R.string.notification_intent), "6");
startActivity(intent);
其中主要活动。类是应该接收意图的类,但通过这种方式,我得到:
Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
如何安全地将数据从服务发送到活动?
Q: 如何将数据从Android服务发送到我的活动?
A: 您有几种选择:
1、使用意图:
如何从服务到活动获取数据
从服务发送msg:
private static void sendMessageToActivity(Location l, String msg) {
Intent intent = new Intent("GPSLocationUpdates");
// You can also include some extra data.
intent.putExtra("Status", msg);
Bundle b = new Bundle();
b.putParcelable("Location", l);
intent.putExtra("Location", b);
LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
注册以在活动中接收消息:
LocalBroadcastManager.getInstance(getActivity()).registerReceiver(
mMessageReceiver, new IntentFilter("GPSLocationUpdates"));
活动中的自定义消息接收器:
private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// Get extra data included in the Intent
String message = intent.getStringExtra("Status");
Bundle b = intent.getBundleExtra("Location");
lastKnownLoc = (Location) b.getParcelable("Location");
...
我不会把这描述为“不安全”——这可能是一个完全合理的方法。
2、将活动绑定到服务
https://developer.android.com/guide/components/bound-services
服务:
public class LocalService extends Service {
// Binder given to clients
private final IBinder binder = new LocalBinder();
...
public class LocalBinder extends Binder {
LocalService getService() {
// Return this instance of LocalService so clients can call public methods
return LocalService.this;
}
}
@Override
public IBinder onBind(Intent intent) {
return binder;
}
活动:
@Override
protected void onStart() {
super.onStart();
// Bind to LocalService
Intent intent = new Intent(this, LocalService.class);
bindService(intent, connection, Context.BIND_AUTO_CREATE);
...
@Override
protected void onStop() {
super.onStop();
unbindService(connection);
mBound = false;
...
/** Defines callbacks for service binding, passed to bindService() */
private ServiceConnection connection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName className,
IBinder service) {
// We've bound to LocalService, cast the IBinder and get LocalService instance
LocalBinder binder = (LocalBinder) service;
mService = binder.getService();
mBound = true;
}
...
// To use the service, your client would call mService.someMethod()...
我不确定您到底在寻找什么,但示例1可能是您最好的选择。
以下教程可能会帮助您了解更多细节/想法:
Android中的服务基础:
https://developer.android.com/guide/components/broadcasts
Android为应用程序提供三种发送广播的方式:
此外:
https://developer.android.com/guide/components/broadcasts#restrict-broadcasts-permissions
限制具有权限的广播
权限允许您将广播限制为持有某些权限的应用程序集。您可以对广播的发送者或接收者实施限制。
使用权限发送
调用sendBroadcast(Intent,String)或sendOrderedBroadcast(Intent,String,BroadcastReceiver,Handler,int,String,Bundle)时,可以指定权限html" target="_blank">参数。只有在其清单中使用标签请求许可的接收者(如果有危险,随后被授予许可)才能接收广播。例如,以下代码发送广播:
就个人而言,我认为仅仅使用意图根本没有任何“安全”问题。
但是,如果您想要或需要,您可以使用上述技术进一步锁定通信。
希望这有帮助!
在我的应用程序中,我试图将数据从我的发送到一个名为的服务。这是我的以下代码: MainActivity.class: BGS服务。课程: 但我没有在服务类中获取数据。以下是我得到的错误: 02-25 09:05:41.166:E/AndroidRuntime(2633): JAVAlang.RuntimeException:无法启动活动 组件信息{com.microapple.googleplac
问题内容: 我在通过Notification从服务向活动发送数据时遇到问题,我单击了一个活动被调用的通知,但是当我尝试通过捆绑包添加一些参数时,我无法获得所谓的intent中的参数,我经历了链接 如何将通知单击中的参数发送到活动? 但是仍然没有运气。 其他人也发生过同样的问题吗? 提前致谢。 问题答案: 您还必须修改清单文件。 这是有效的示例: 这些变量和方法是Service类的成员: 这是Mai
问题内容: 我有一个在我的应用程序中的单独线程中运行的类。我可以一次运行多个线程,并且这些线程是守护程序。一段时间后, 其中一些 线程需要接收和处理消息。我该怎么做呢? 我的代码示例如下所示: 输出: 但是,我希望最后五行与无关,而不是,我希望对我来说像这样: 我如何正确地向正在运行的线程发送这样的消息? 附录: 如果我在该块之后有这个块,并使用@dano的代码来解决上述问题,则它似乎没有响应这些
问题内容: 我想使用Android将数据发送到我的php页面。我该怎么做? 问题答案: 您可以使用AndroidHttpClient进行GET或POST请求: 创建一个AndroidHttpClient来执行您的请求。 创建一个HttpGet或HttpPost请求。 使用setEntity和setHeader]方法填充请求。 对您的请求使用客户端上的execute方法之一。
我一直在做这个项目,其中一个部分包括从Raspberry向我的服务器发送一些数据。但它不能正常工作,我不知道为什么。我试图通过删除“urllib2”并使用“request”来修复错误。但徒劳的是,一切都没有改变。如果有人能帮助我,我会非常感激的。谢谢! PHP代码: python代码:
我想在片段的活动中使用一些文本视图(cityField,updatedField)。我知道在活动中使用它们会更容易,但问题是,由于要获取一些JSON数据,我不得不在Fragment上加入一些代码 我已经得到了活动代码的ID 现在我想在我的片段中使用它们 所以问题是 - 这可能吗?如果可能,如何? 我已经检查了这个网站上的一些答案 - 在Android中将数据从活动发送到片段 如何使用捆绑包将数据从