大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
Android怎么给onReceive()函数传参数有几种解决办法
十年的米易网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都营销网站建设的优势是能够根据用户设备显示端的尺寸不同,自动调整米易建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联从事“米易网站设计”,“米易网站推广”以来,每个客户项目都认真落实执行。
解决方案1:
该函数是系统回调函数,不是给你调用的,你需要调用sendBroadcast(Intent o)
解决方案2:
这是个广播接收器,用来接收广播的,可以通过intent来获取广播传过来的值
解决方案3:
解决方案4:
发送广播消息是通过Context.sendBroadcast(intent)
intent中附加要传递的值
第一个页面跳转 传递值
Button bn1=(Button)findViewById(R.id.btn_Login); //跳转
bn1.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
Intent intent=new Intent(tiaoz.this,nexts.class);
//传值
EditText txt_username=(EditText)findViewById(R.id.edit_username);
EditText txt_password=(EditText)findViewById(R.id.edit_password);
Bundle bundle = new Bundle();
bundle.putString("key_username", txt_username.getText().toString());
bundle.putString("key_password", txt_password.getText().toString());
intent.putExtras(bundle);
startActivity(intent);
finish();
}
});
第二个页面接收值
Bundle bunde = this.getIntent().getExtras();
String strs="用户名:"+bunde.getString("key_username").toString()+"密码:"+bunde.getString("key_password").toString();
//改变文本框的文本内容
show.setText(strs);
这个是通过http请求传递的,POST传递。
在java中通过调用http对象,设置post请求,传递groupids数组即可,数组传不了就序列化传递
首先,网页和app页面进行交互,其实会很快想到JS交互,但是现在需要在第三方浏览器中,那就没法拿到Webview,也就没法js互交,所以这里Android也提供有方法。
看一个静态页面(html):
BODY
a href="hjz://com.zjmk.hjz_progressmotirx/openwith?gameid=12007pk_name=com.surfing.android.tastyfood"启动应用程序/a
/p/br/p
a href="hjz://com.zjmk.hjz_progressmotirx/down?apkurl=;apkname=黄金指memo=这是一款牛逼的手赚软件gameid=12007pk_name=com.surfing.android.tastyfood"启动应用程序下载页面/a
/BODY
我们看看href里面的组成:
- hjz://:这里的hjz://是“scheme”。
- com.zjmk.hjz_progressmotirx:这个是“host”。
- /down:这个是方法名前缀“pathPrefix”。
- apkurl=….pkname=…:这个是传递的参数。
看到以上代码可能还是不是很明白这些有什么用,那么接着往下看….
看android端:
其实在android里面的项目清单住处的Activity下面可以添加很多数据节点,如 ,,,….
activity android:name=".OpenapkActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.Black.NoTitleBar"
intent-filter
action android:
name="android.intent.action.VIEW"/
category android:
name="android.intent.category.DEFAULT" /
category
name="android.intent.category.BROWSABLE" /
data
android:scheme="hjz" android:host="com.zjmk.hjz_progressmotirx" android:pathPrefix="/openwith"/
/intent-filter
/activity
看这个activity注册,在其下面添加了几个数据节点,action,category,data。看来data里面的数据应该就很明白了,data节点里面的数据都是和我们网页相对应的,如
scheme=”hjz”,//协议
host=”com.zjmk.hjz_progressmotirx”;//主机
pathPrefix=”/openwith”;//方法前缀
只有先对应才能正确的启动页面。
在activity中获取数据:
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.openapklayput);
Intent intent=getIntent();
String action = intent.getAction();
if(Intent.ACTION_VIEW.equals(action)){
Uri uri =intent.getData();
if(uri != null){
//根据属性值获取数据
String gameid=
uri.getQueryParameter("gameid");
String pkname=
uri.getQueryParameter("pk_name");
PackageManager packageManager =
getPackageManager();
Intent intent2=new Intent();
intent2 =packageManager
.getLaunchIntentForPackage(pkname);
startActivity(intent2);
Intent intent1=
new Intent(this,MotirxServices.class);
}
}
}
……到这里可以完成第三方浏览器和自己app应用的交互在跳过WebVIew的情况下,但是这里可能会有一个悲催的事情,就是他的兼容性。在369获取猎豹浏览器中href=“”;这里在scheme前面自动加上http://…..
这里就导致不能正常的打开我们指定的app页面。系统内置浏览器肯定是可以的,只是第三方浏览器可能存在这个问题,不过我的手机测试基本都可以,没问题。
android中activity中向service传递参数,有如下方法:
1.在Activity里注册一个BroadcastReceiver,Service完成某个任务就可以发一个广播,接收器收到广播后通知activity做相应的操作。
2.使用bindService来关联Service和Application,应用.apk里的所有组件一般情况都运行在同一个进程中,所以不需要用到IPC,bindService成功后,Service的Client可以得到Service返回的一个iBinder引用,具体的参见Service的文档及onBind的例子,这样Service的引用就可以通过返回的iBinder对象得到,如
public class LocalService extends Service {
// This is the object that receives interactions from clients. See
// RemoteService for a more complete example.
private final IBinder mBinder = new LocalBinder();
public class LocalBinder extends Binder {
LocalService getService() {
return LocalService.this;
}
}
@Override
public IBinder onBind(Intent intent) {
return mBinder;
}
}
之后Client通过这个iBinder对象得到Service对象引用之后,可以直接和Service通讯,比如读取Service中的值或是调用Service的方法。
由CourseActivity跳转到MainActivity?
通过intent.putExtras(xxx,yyy)来传递参数,在MainActivity里面通过getIntent().getExtras().get(xxx)来获取参数。你要给自定义类设置参数,只要在类里面添加一个属性,用来接收就好了。