Android之 跳转
Android一个app启动另一个app

Android⼀个app启动另⼀个app最近,⼀个app启动另⼀个app,这个玩法挺⽕的嘛,有没有试过更新QQ到5.1版本,QQ的健康⾥⾯就可以添加其他app,实现从QQ跳转到其他app应⽤。
这个挺好玩的,⼀下⼦带来了多少流量啊。
⼀、先来⼏⾏代码,⼀个app启动另⼀个app// 通过包名获取要跳转的app,创建intent对象Intent intent = getPackageManager().getLaunchIntentForPackage("com.example.liuxiang");// 这⾥如果intent为空,就说名没有安装要跳转的应⽤嘛if (intent != null) {// 这⾥跟Activity传递参数⼀样的嘛,不要担⼼怎么传递参数,还有接收参数也是跟Activity和Activity传参数⼀样intent.putExtra("name", "Liu xiang");intent.putExtra("birthday", "1983-7-13");startActivity(intent);} else {// 没有安装要跳转的app应⽤,提醒⼀下Toast.makeText(getApplicationContext(), "哟,赶紧下载安装这个APP吧", Toast.LENGTH_LONG).show();}这⾥或许⽹上有很多类似代码,还是提⼀下,让⼤家知道流程。
⼆、被启动的app如何获取参数呢?public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_main);Intent intent = getIntent();Bundle bundle = intent.getExtras();if (bundle != null) {String name = bundle.getString("name");String birthday = bundle.getString("birthday");if (name != null && birthday != null) {Toast.makeText(getApplicationContext(), "name:" + name + " birthday:" + birthday, Toast.LENGTH_SHORT).show();}}}}在被打开的app应⽤,也是简单地⼏⾏代码可以接收到传过来的参数信息。
android中launchMode四种启动方法详解

Activity中在多Activity开发中,有可能是自己应用之间的Activity跳转,或者夹带其他应用的可复用Activity。
可能会希望跳转到原来某个Activity实例,而不是产生大量重复的Activity。
这需要为Activity配置特定的加载模式,而不是使用默认的加载模式。
加载模式分类及在哪里配置Activity有四种加载模式:∙standard∙singleTop∙singleTask∙singleInstance设置的位置在AndroidManifest.xml文件中activity元素的android:launchMode属性:<activity android:name="ActB"android:launchMode="singleTask"></activity>也可以在Eclipse ADT中图形界面中编辑:区分Activity的加载模式,通过示例一目了然。
这里编写了一个Activity A(ActA)和Activity B(ActB)循环跳转的例子。
对加载模式修改和代码做稍微改动,就可以说明四种模式的区别。
standard首先说standard模式,也就是默认模式,不需要配置launchMode。
先只写一个名为ActA的Activity:package com.easymorse.activities;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.LinearLayout;import android.widget.TextView;public class ActA extends Activity {/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);TextView textView = new TextView(this);textView.setText(this + "");Button button = new Button(this);button.setText("go actA");button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent();intent.setClass(ActA.this, ActA.class);startActivity(intent);}});LinearLayout layout = new LinearLayout(this);layout.setOrientation(LinearLayout.VERTICAL);layout.addView(textView);layout.addView(button);this.setContentView(layout);}}例子中都没有用layout,免得看着罗嗦。
android三种实现水平向滑动方式(ViewPager、ViewFilpper、ViewF…

android三种实现水平向滑动方式(ViewPager、ViewFilpper、ViewF…ViewPagerViewPager类提供了多界面切换的新效果。
新效果有如下特征:[1] 当前显示一组界面中的其中一个界面。
[2] 当用户通过左右滑动界面时,当前的屏幕显示当前界面和下一个界面的一部分。
[3] 滑动结束后,界面自动跳转到当前选择的界面中ViewPager来源于google 的补充组件android-support-v4.jar,位置在androidSDK文件夹android-sdks\extras\android\support\ 下将android-support-v4.jar 引用到项目中注:该包需要在Android SDK Manager中额外下载Extras下的Android Support package,或直接下载该jar包到项目中引用引入后可直接当作控件在项目中使用。
配置文件页面文件<android.support.v4.view.ViewPagerandroid:id="@+id/viewPager1"android:layout_width="fill_parent"android:layout_height="fill_parent"android:layout_centerVertical="true" />配置适配器的页面变化事件viewPager1.setOnPageChangeListener(new OnPageChangeListener() {//页面选择@Overridepublic void onPageSelected(int position) {topText.setText(String.valueOf(position+1)+"/"+String.valueOf(lists.length));}@Overridepublic void onPageScrollStateChanged(int state) { }@Overridepublic void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { }});ViewPager使用的适配器基于PagerAdapter基类主要实现一下四个方法//获取当前窗体界面数public int getCount()//初始化position位置的界面public Object instantiateItem(View collection, int position) //销毁position位置的界面public void destroyItem(View collection, int position, Object view)// 判断是否由对象生成界面public boolean isViewFromObject(View arg0, Object arg1)ViewPager控件的使用中,可以将View装如ArrayList中作为数据载体,每一项(即每一页)为一个View显示,可以适应大量页面或者变化的页面长度的显示ViewFilpperViewfilpper控件主要用于在同一个Activity内屏幕见的切换,最长见的情况就是在一个FrameLayout内有多个页面,比如一个系统设置页面;一个个性化设置页面。
startactivityinner 源码 解析

startactivityinner 源码解析摘要:1.Android 中的StartActivity 方法介绍2.StartActivity 的工作原理3.StartActivity 参数解析4.常见问题及解决方法5.实战案例分享正文:作为一名Android 开发者,熟练掌握StartActivity 方法对于实现应用程序的跳转功能至关重要。
本文将详细介绍Android 中的StartActivity 方法,解析其工作原理,并分析常见问题及解决方法。
最后,将通过实战案例分享,帮助大家更好地理解和应用StartActivity。
1.Android 中的StartActivity 方法介绍在Android 中,StartActivity 方法是Activity 类中的一个方法,用于启动另一个Activity。
通过调用这个方法,可以实现不同界面之间的跳转,使得应用程序的功能更加丰富。
StartActivity 方法的定义如下:```javapublic void startActivity(Intent intent)```参数:- Intent:表示要启动的Activity 的Intent 对象。
2.StartActivity 的工作原理StartActivity 方法启动另一个Activity 的过程可以分为以下几个步骤:- 创建一个Intent 对象,表示要启动的Activity。
- 调用startActivity 方法,将Intent 对象传递给目标Activity。
- 目标Activity 接收到Intent 对象,根据Intent 中的信息创建对应的实例。
- 目标Activity 实例启动,并设置界面布局。
- 源Activity 完成跳转,退出屏幕。
3.StartActivity 参数解析在StartActivity 方法中,Intent 对象包含了要启动的Activity 相关信息。
以下是Intent 对象中常用的参数:- action:表示Activity 启动的类型,例如ACTION_VIEW、ACTION_EDIT 等。
第5章 视图界面布局

5.3 多界面的使用
Activity的跳转有两种情况:
Activity的简单跳转,不携带数据 Activity携带数据的跳转
Activity的简单跳转
所谓简单跳转,即只从起始Activity跳转至目 标Activity,不携带任何数据。 步骤:
1、创建Intent实例,即创建一个意图(3种方法)。 Intent intent=new Intent(packageContext, cls);
如: android:layout_above="@+id/button1" android:layout_toRightOf="@+id/button1“
属性5 与相对子控件边缘对齐
android:layout_alignBottom 值为其他UI组件的id,指定该组件 与哪个组件的下边界对齐 android:layout_alignLeft 值为其他UI组件的id,指定该组件 与哪个组件的左边界对齐 android:layout_alignRight 值为其他UI组件的id,指定该组件 与哪个组件的右边界对齐 android:layout_alignTop 值为其他UI组件的id,指定该组件 与哪个组件的上边界对齐
5.1.6 布局复用
作用:
为了保证多窗口工程的风格统一,一个工程中不 同的界面中,有很多相同的布局成分,所以,可以将 相同布局的代码单独作为一个模块,在其他布局中重 用公共布局。
实现布局重用的方式: <include >标签 <merge>标签
<include >标签
作用:
可以在需要引用的界面的xml文件的具体位置调用 include标签达到了布局复用的效果,减少代码冗余。
Android中的windowSoftInputMode属性详解

Android中的windowSoftInputMode属性详解在前⾯的⼀篇⽂章中,简单的介绍了⼀下如何实现软键盘不⾃动弹出,使⽤的⽅法是设置android:windowSoftInputMode属性。
那么,这个属性到底是⼲什么的,他有什么作⽤呢?今天这篇⽂章,就是探索android:windowSoftInputMode属性的作⽤的。
⾸先,我们从这个属性的名称中,可以很直观的看出它的作⽤,这个属性就是来设置窗⼝软键盘的交互模式的。
android:windowSoftInputMode属性⼀共有9个取值,分别是:stateUnspecified,stateUnchanged,stateHidden,stateAlwaysHidden,stateVisible,stateAlwaysVisible,adjustUnspecified,adjustResize,adjustPan。
我们设置属性的时候,可以在这9个值⾥⾯选择⼀个,也可以⽤"state...|adjust"的形式进⾏设置。
那么,这些取值到底是怎么影响到软键盘与窗⼝之间的交互的呢?下⾯,我们就⼀个个的测试这9个取值,到底是如何影响软键盘的显⽰的。
1.stateUnspecified中⽂意思是未指定状态,当我们没有设置android:windowSoftInputMode属性的时候,软件默认采⽤的就是这种交互⽅式,系统会根据界⾯采取相应的软键盘的显⽰模式,⽐如,当界⾯上只有⽂本和按钮的时候,软键盘就不会⾃动弹出,因为没有输⼊的必要。
那么,当界⾯上出现了获取了焦点的输⼊框的时候,软键盘会不会⾃动的弹出呢?这个还真不⼀定!⽐如,在下⾯的这个界⾯布局中,软键盘并不会⾃动弹出。
就是说,默认的,在这种界⾯情况下,系统并不确定⽤户是否需要软键盘,因此不会⾃动弹出。
但是,为什么说不⼀定呢?这是因为,如果我们在这个布局的外⾯,包裹上⼀个ScrollView,软键盘就会⾃动的弹出来了!如下,在这种布局⽂件下,软键盘会⾃动的弹出复制代码代码如下:<LinearLayout xmlns:android="/apk/res/android"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><ScrollViewandroid:layout_width="match_parent"android:layout_height="match_parent" ><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical" ><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:onClick="toOther"android:text="跳转" /><EditTextandroid:layout_width="match_parent"android:layout_height="wrap_content" /></LinearLayout></ScrollView></LinearLayout>这确实是⼀个很奇怪的判断⽅式。
intent在android中的用法
intent在android中的用法在Android开发中,Intent是一种用于在应用程序组件之间传递信息的消息对象。
它可以用于启动活动(Activity)、服务(Service)或发送广播(Broadcast)。
以下是Intent在Android 中的几种常见用法:1.启动活动(Starting Activities):使用Intent启动一个新的活动。
例如,从当前活动跳转到另一个活动。
2.传递数据给活动(Passing Data to Activities):通过Intent的putExtra()方法,可以传递基本数据类型、字符串、序列化对象等。
3.返回数据给调用活动(Returning Data to the Calling Activity):使用startActivityForResult()启动新活动,并在新活动中使用setResult()设置返回数据。
4.启动服务(Starting Services):使用Intent启动服务,服务可以在后台执行长时间运行的操作。
5.发送广播(Sending Broadcasts):使用Intent发送广播,所有注册了相应广播接收器的组件都可以接收到广播。
6.隐式意图(Implicit Intents):不指定具体的组件类,而是声明要执行的操作。
系统会选择能够处理该操作的组件。
7.PendingIntent:PendingIntent是一种特殊的Intent,它允许你在稍后的某个时间点执行一个操作,或者由其他应用程序执行。
常用于通知、闹钟等场景。
8.使用Intent过滤器(Intent Filters):在AndroidManifest.xml中,使用<intent-filter>标签来声明活动、服务等可以响应哪些类型的Intent。
这对于定义应用程序的主入口点或响应系统事件非常有用。
黑马程序员安卓教程:Intent激活发送系统短信页面
Intent激活系统发送短信页面之UI通过Intent可以实现Activity/Activity之间的跳转,下面我们编写一个案例,在该案例中实现夸应用间的页面跳转,即在本应用中通过Intent跳转到手机短信应用的短信发送页面,具体步骤如下:1.新建工程【File】→【new】→【Android Application Project】命名为:04_生日短信发送器2.编写布局根据需求设计页面布局,如图1-1所示:图1-1所示图1-1对应的xml布局代码如例1-1:例1-1例1-1图1-1使用ListView列表来部署所要发送的短信条目,该ListView每一条目的布局如图1-2所示:图1-2所示ListView的每一个条目布局很简单,只是一个TestView,该TextView用来展示ListView中的一个条目内容即发送短信的内容。
图1-2所对应的xml布局代码如例1-2所示:例1-23.部署短信数据ListView用来列举待发送短信列表,下面我们将来适配ListView中的数据,步骤如下:新建一个String[]类型的数组,代表短信内容,代码如例1-3:例1-4例1-4调用ListView的setAdapter方法来适配数据,由于该数据都是简单的文本类型,所以我们可以使用ArrayAdapter来适配该短信内容。
4.编写点击事件ListView数据已经完成部署,接下来我们需要编写该ListView每一条目的点击事件。
当点击某一个条目时,跳转到短信发送页面并将短信发送内容传递到这个页面。
效果如图1-3所示:点击某一个条目,跳图1-3所示若要实现图1-3的效果,我们需要做到以下几点:●通过Intent跳到第二个页面;●由于第二个页面属于另一个应用,我们肯定会使用隐式意图来跳转;●若要使用隐式意图跳转到第二个页面,我们需要找到第二个页面在其所在清单文件的注册信息,查找注册action值,data的值,category值等;●页面跳转时,短信内容也需要传递到第二个页面并部署在短信编辑框内;以上这些工作都需要在ListView每一条目点击事件中实现,关于这部分类容我们将在下一个文档中讲解(Intent激活系统短信发送页面之编写)。
华为AppGallery常用跳转与链接详解
华为AppGallery常⽤跳转与链接详解当前华为应⽤市场(AppGallery,以下简称AG)的功能越来越全,页⾯也越来越多,随着⽽来的,是对于个各种页⾯跳转的需求越来越旺盛。
但是,华为AppGallery所提供的链接的种类、功能、使⽤场景越来越多,不熟悉的⼈看到这各种链接,肯定会⾮常头⼤。
下⾯根据我的使⽤是理解,做了⼀些AppGallery常⽤链接与跳转场景的整理,仅供⼤家参考。
下⾯各种链接的介绍,主要按照使⽤场景来划分,如有错误,还请⼤家指正。
1、跳转到AG⾸页典型使⽤场景:需要从开发者应⽤内,拉起跳转到应⽤市场⾸页,让⽤户⾃⾏搜索相关的应⽤或者活动。
使⽤⽅法:使⽤Intent的action⽅法,具体动作为:1action:com.huawei.appmarket.intent.action.MainActivity相关代码⽰例:public void launchAGHomePage() {Intent intent = new Intent("com.huawei.appmarket.intent.action.MainActivity");startActivity(intent);}2、跳转到AG应⽤详情页2.1 应⽤内通过Intent跳转典型使⽤场景:应⽤内拉起跳转到应⽤详情页,应⽤⽤户进⾏评分评论等操作。
使⽤⽅法:使⽤Intent的action⽅法,具体可分为两类:1、通过APPID:1 2 3action:com.huawei.appmarket.appmarket.intent.action.AppDetail. withid setPackage("com.huawei.appmarket");name: “appId”, value: “C100170981”2、通过包名:1 2 3action:com.huawei.appmarket.intent.action.AppDetail setPackage("com.huawei.appmarket");name: “APP_PACKAGENAME”, value: “com.huawei.browser”注意点:如果使⽤⽅式1即APPID的⽅式,⽐使⽤包名的⽅式,action中多了appmarket以及withid参数。
Android中Notification通知用法详解
Android中Notification通知⽤法详解Notification的作⽤通知(Notification)是Android系统中⽐较有特⾊的⼀个功能。
当某个应⽤程序希望向⽤户发出⼀些提⽰信息,⽽该应⽤程序⼜不在前台运⾏时,就可以⽤通知来实现⽤法⾸先我们需要⼀个NotificationManager来对通知进⾏管理,可以调⽤getSystemService()⽅法得到,⽅法接收⼀个字符串参数⽤于确定获取系统的哪个服务,这⾥我们传⼊NOTIFICATION_SERVICE。
NotificationManager manager=(NotificationManager) getSystemService(NOTIFICATION_SERVICE);接下来⽤⼀个Builder构造器来创建Notification对象Intent intent=new Intent(this,NotificationActivity.class);//⽤intent表现出我们要启动Notification的意图PendingIntent pi=PendingIntent.getActivity(this,0,intent,0);//将Intent对象传⼊PendingIntent对象的getActivity⽅法中NotificationManager manager=(NotificationManager) getSystemService(NOTIFICATION_SERVICE);Notification notification=new NotificationCompat.Builder(this).setContentTitle("This is content title")//设置通知栏中的标题.setContentText("hello world!")//设置通知栏中的内容.setWhen(System.currentTimeMillis())//设置通知出现的时间,此时为事件响应后⽴马出现通知.setSmallIcon(R.mipmap.ic_launcher)//设置通知出现在⼿机顶部的⼩图标.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher))//设置通知栏中的⼤图标.setContentIntent(pi)//将PendingIntent对象传⼊该⽅法中,表明点击通知后进⼊到NotificationActivity.class页⾯.setAutoCancel(true)//点击通知后,通知⾃动消失.setDefaults(NotificationCompat.DEFAULT_ALL)//默认选项,根据⼿机当前的环境来决定通知发出时播放的铃声,震动,以及闪光灯.setPriority(NotificationCompat.PRIORITY_MAX)//设置通知的权重.build();manager.notify(1,notification);//⽤于显⽰通知,第⼀个参数为id,每个通知的id都必须不同。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Android之 跳转
package com.example.tiantianrun;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class Secend extends Activity implements OnClickListener {
TextView textView;
EditText edit;
String message=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.secend);
Intent intent=getIntent();
String message = intent.getStringExtra("你真叼!");
textView = (TextView) findViewById(R.id.text);
textView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
edit = (EditText) findViewById(R.id.edit_message);
String str = edit.getText().toString();
if (TextUtils.isEmpty(str)) {
str = "你真的很有想法!";
}
Toast.makeText(Secend.this, str, 0).show();
textView.setText(message);
// Intent intent=new Intent(Secend.this,MainActivity.class);
// startActivity(intent);
}
}
package com.example.tiantianrun;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class Acvitity extends Activity {
TextView text;
String TAG="Acvitity";
EditText editText;
//创建
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.acvitity);
text=(TextView) findViewById(R.id.text);
editText = (EditText) findViewById(R.id.edit_message);
text.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String message = editText.getText().toString();
if (TextUtils.isEmpty(message)) {
message = "请输入一个账号:";
}
Toast.makeText(Acvitity.this, message, 0).show();
Intent intent=new Intent(Acvitity.this,Secend.class);
intent.putExtra("你真叼!", message);
startActivity(intent);
}
});
Log.d(TAG,"----onCreate--");
}
//重启
@Override
protected void onRestart() {
// TODO Auto-generated method stub
super.onRestart();
Log.d(TAG,"----onRestart--");
}
//开始
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
Log.d(TAG,"----onStart--");
}
//恢复
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
Log.d(TAG,"----onResume--");
}
//暂停
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
Log.d(TAG,"----onPause--");
}
//停止
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
Log.d(TAG,"----onStop--");
}
//销毁
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Log.d(TAG,"----onDestroy--");
}
}