我熟悉使用putExtra和getExtra方法将数组从一个活动传递到另一个活动的方法。但是,每当我尝试从服务中获取它时,以下代码都不起作用:
Bundle b = this.getIntent().getExtras();
String Array = b.getStringArray("paths");
没有认识到以下内容:
this.getIntent().getExtras();
有什么想法吗?
修改的
活动类中的我有以下内容:
toService = new Intent();
toService.setClass(this, Service.class);
toService.putExtra("paths",Array);
在服务类中:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// TODO Auto-generated method stub
Bundle extras = intent.getExtras();
if(extras!=null)
{
Paths = extras.getStringArray("paths");
Toast.makeText(protectionService.this, Paths[0], Toast.LENGTH_SHORT).show();
}
return 0;
}
由于没有明确分配路径,因此没有出现任何内容。
Paths = extras.getStringArray("paths");
似乎不起作用。
答案 0 :(得分:1)
您在哪里尝试访问getIntent?
以下是我编写的程序的片段,它使用了getExtras:
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
Bundle extras = intent.getExtras();
if (extras != null) {
// Do what you want
}
}
但是,onStart现已弃用,因此您应该使用onStartCommand。 您将意图作为参数之一。
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
handleCommand(intent);
// We want this service to continue running until it is explicitly
// stopped, so return sticky.
return START_STICKY;
}
否则您可以使用AIDL,偏好设置或此处回答的任何其他示例:How to access a variable present in a service
同样的问题已经回答Android: how to get the intent received by a service?
编辑: 如果你使用这个
toService = new Intent();
toService.setClass(this, Service.class);
toService.putExtra("array",Array);
你需要使用相同的密钥来获取附加功能,这里的密钥是“array”
Paths = extras.getStringArray("array");