activity和service中用什么方法传递Intent参数? serviceBundleactivity 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 intent.putExtra("url", "你的url");//要传递的urlString url=getIntent().getStringExtra("url");//获取传递过来的url onStartCommand 第一个参数就是接收的 intent,对于数量不多的参数,可以用 putExtra 和系列的 getXXXXExtra。 上面两位的方法我都使用过了,可能是自己的原因,传过去的参数一直是null,后来我采用了Bundle的方法终于搞定了,下面我贴贴自己的代码吧。 package com.B_project.picture_distinguish;import java.io.File;import java.text.SimpleDateFormat;import java.util.Date;import android.app.Activity;import android.app.AlertDialog;import android.content.DialogInterface;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.drawable.BitmapDrawable;import android.graphics.drawable.Drawable;import android.net.Uri;import android.os.Bundle;import android.os.Environment;import android.provider.MediaStore;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ImageButton;public class MainActivity extends Activity implements OnClickListener { private ImageButton img_btn; private Button btn,dis_btn; private static final int PHOTO_REQUEST_TAKEPHOTO =1;//拍照 private static final int PHOTO_REQUEST_GALLERY =2;//从相册中选择 private static final int PHOTO_REQUEST_CUT =3;//结果 //创建一个以当前时间为名称的文件 File tempFile = new File(Environment.getExternalStorageDirectory(),getPhotoFileName()); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); } //初始化控件 private void init(){ img_btn = (ImageButton)findViewById(R.id.img_btn); btn = (Button)findViewById(R.id.btn); dis_btn = (Button)findViewById(R.id.dis_btn); //为ImageButton和Button添加监听事件 img_btn.setOnClickListener(this); btn.setOnClickListener(this); dis_btn.setOnClickListener(this); } @Override public void onClick(View v) { // TODO Auto-generated method stub switch(v.getId()){ case R.id.img_btn: showDialog(); break; case R.id.btn: showDialog(); break; } } //提示对话框方法 private void showDialog() { new AlertDialog.Builder(this) .setTitle("头像设置") .setPositiveButton("拍照", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub dialog.dismiss(); // 调用系统的拍照功能 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); // 指定调用相机拍照后照片的储存路径 intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(tempFile)); startActivityForResult(intent, PHOTO_REQUEST_TAKEPHOTO); } }) .setNegativeButton("相册", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub dialog.dismiss(); Intent intent = new Intent(Intent.ACTION_PICK, null); intent.setDataAndType( MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*"); startActivityForResult(intent, PHOTO_REQUEST_GALLERY); } }).show(); } @Override protected void onActivityResult(int requestCode,int resultCode,Intent data){ // TODO Auto-generated method stub switch(requestCode){ case PHOTO_REQUEST_TAKEPHOTO://当选择拍照时调用 startPhotoZoom(Uri.fromFile(tempFile)); break; case PHOTO_REQUEST_GALLERY://当选择从本地获取图片时 //做非空判断,当我们觉得不满意想重新剪裁的时候便不会报异常,下同 if (data !=null) startPhotoZoom(data.getData()); break; } super.onActivityResult(requestCode, resultCode, data); } private void startPhotoZoom(Uri uri){ Bundle mbundle = new Bundle(); mbundle.putString("URI", uri.toString()); Intent intent = new Intent(this,MyService.class); intent.setAction("com.B_project.service.BIND_SERVICE"); intent.putExtras(mbundle); startService(intent); System.out.println("**************"+uri); } //将进行剪裁后的图片显示到UI界面上 private void setPicToView(Intent picdata) { Bundle bundle = picdata.getExtras(); if (bundle != null) { Bitmap photo = bundle.getParcelable("data"); Drawable drawable = new BitmapDrawable(photo); img_btn.setBackgroundDrawable(drawable); } } // 使用系统当前日期加以调整作为照片的名称 private String getPhotoFileName() { Date date = new Date(System.currentTimeMillis()); SimpleDateFormat dateFormat = new SimpleDateFormat("'IMG'_yyyyMMdd_HHmmss"); return dateFormat.format(date) + ".jpg"; } @Override protected void onDestroy() { MainActivity.this.stopService(new Intent(MainActivity.this,MyService.class)); super.onDestroy(); }} package com.B_project.picture_distinguish;import java.net.URI;import android.app.Service;import android.content.Intent;import android.os.Bundle;import android.os.IBinder;import android.provider.MediaStore;public class MyService extends Service{ @Override public IBinder onBind(Intent intent) { // TODO Auto-generated method stub System.out.println("Service is Binded"); return null; } public int onStartCommand(Intent intent,int flag,int startId){ super.onStartCommand(intent, flag, startId); Bundle bundle = (Bundle)intent.getExtras(); String uri=bundle.getString("URI"); System.out.println("sevice---------------"+uri); return startId; } public void onCreate(Bundle savedInstanceState){ super.onCreate(); System.out.println("Service is Created"); }} 第一个程序“HelloWorld”就不能运行 问个问题,需要懂得android系统源码的过来 Android EditText 改变行距之后光标也随之改变 ksoap2上传xml格式的字符串参数时,xml中的>,<,/变成了预实体上传。怎么使得不变为预实体 Android 蓝牙传输玩明白的大牛,请! APK包安装的问题 Android下如何读写SDIO接口? android虹膜识别 有关Android Manager 的使用方法 ViewGroup+gridview不刷新 asynchttpclient 在runnable 里面执行不成功 自定义Adapter的getView方法不执行
String url=getIntent().getStringExtra("url");//获取传递过来的url
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageButton;public class MainActivity extends Activity implements OnClickListener {
private ImageButton img_btn;
private Button btn,dis_btn;
private static final int PHOTO_REQUEST_TAKEPHOTO =1;//拍照
private static final int PHOTO_REQUEST_GALLERY =2;//从相册中选择
private static final int PHOTO_REQUEST_CUT =3;//结果
//创建一个以当前时间为名称的文件
File tempFile = new File(Environment.getExternalStorageDirectory(),getPhotoFileName());
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
//初始化控件
private void init(){
img_btn = (ImageButton)findViewById(R.id.img_btn);
btn = (Button)findViewById(R.id.btn);
dis_btn = (Button)findViewById(R.id.dis_btn);
//为ImageButton和Button添加监听事件
img_btn.setOnClickListener(this);
btn.setOnClickListener(this);
dis_btn.setOnClickListener(this);
} @Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.img_btn:
showDialog();
break;
case R.id.btn:
showDialog();
break;
}
}
//提示对话框方法
private void showDialog() {
new AlertDialog.Builder(this)
.setTitle("头像设置")
.setPositiveButton("拍照", new DialogInterface.OnClickListener() { @Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.dismiss();
// 调用系统的拍照功能
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
// 指定调用相机拍照后照片的储存路径
intent.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(tempFile));
startActivityForResult(intent, PHOTO_REQUEST_TAKEPHOTO);
}
})
.setNegativeButton("相册", new DialogInterface.OnClickListener() { @Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.dismiss();
Intent intent = new Intent(Intent.ACTION_PICK, null);
intent.setDataAndType(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
"image/*");
startActivityForResult(intent, PHOTO_REQUEST_GALLERY);
}
}).show();
}
@Override
protected void onActivityResult(int requestCode,int resultCode,Intent data){
// TODO Auto-generated method stub
switch(requestCode){
case PHOTO_REQUEST_TAKEPHOTO://当选择拍照时调用
startPhotoZoom(Uri.fromFile(tempFile));
break;
case PHOTO_REQUEST_GALLERY://当选择从本地获取图片时
//做非空判断,当我们觉得不满意想重新剪裁的时候便不会报异常,下同
if (data !=null)
startPhotoZoom(data.getData());
break;
}
super.onActivityResult(requestCode, resultCode, data);
}
private void startPhotoZoom(Uri uri){
Bundle mbundle = new Bundle();
mbundle.putString("URI", uri.toString());
Intent intent = new Intent(this,MyService.class);
intent.setAction("com.B_project.service.BIND_SERVICE");
intent.putExtras(mbundle);
startService(intent);
System.out.println("**************"+uri);
}
//将进行剪裁后的图片显示到UI界面上
private void setPicToView(Intent picdata) {
Bundle bundle = picdata.getExtras();
if (bundle != null) {
Bitmap photo = bundle.getParcelable("data");
Drawable drawable = new BitmapDrawable(photo);
img_btn.setBackgroundDrawable(drawable);
}
} // 使用系统当前日期加以调整作为照片的名称
private String getPhotoFileName() {
Date date = new Date(System.currentTimeMillis());
SimpleDateFormat dateFormat = new SimpleDateFormat("'IMG'_yyyyMMdd_HHmmss");
return dateFormat.format(date) + ".jpg";
}
@Override
protected void onDestroy() {
MainActivity.this.stopService(new Intent(MainActivity.this,MyService.class));
super.onDestroy();
}
}
import android.content.Intent;
import android.os.Bundle;
import android.os.IBinder;
import android.provider.MediaStore;public class MyService extends Service{
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
System.out.println("Service is Binded");
return null;
} public int onStartCommand(Intent intent,int flag,int startId){
super.onStartCommand(intent, flag, startId);
Bundle bundle = (Bundle)intent.getExtras();
String uri=bundle.getString("URI");
System.out.println("sevice---------------"+uri);
return startId;
}
public void onCreate(Bundle savedInstanceState){
super.onCreate();
System.out.println("Service is Created");
}
}