一个应用启动另一个应用+开机启动应用
来源:互联网 发布:linux终端退出命令 编辑:程序博客网 时间:2024/06/06 21:41
启动一个已安装的应用我们可以通过PackageManger类的getLaunchIntentForPackage(包名)(包名的设置有一定的规则,包名必须是我们要启动的应用的入口Activity所在的包名,否则会出现getLaunchIntentForPackage()返回null造成空指针的错误,若我们中间将入口Activity移动过位置,则清单文件中的manifest的属性Package应是入口Activity所在的包名,否则同样出现上述错误)获取Intent,通过startActivity进行跳转启动应用,调用跳转的应用必须添加权限
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
实例:
应用一
布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.mytest.MainActivity" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="128dp"
android:text="跳转" />
</RelativeLayout>
Activity:
public class MainActivity extends Activity {
private Button button1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button1=(Button) findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent toList=getPackageManager().getLaunchIntentForPackage("com.text.test");
startActivity(toList);
}
});
}
}
应用二可以是任意一个应用,主要在于清单文件的内容
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.mytest2"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="15" android:targetSdkVersion="21" />
<application
android:allowBackup="true" android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<!-- 入口的Activity,name查看所在包名,.代表manifest的package属性,这两者若不一致虽不会影响本应用程序的启动,但若其他应用程序通过getLaunchIntentForPackage()获取Intent则会为null,则不能进行跳转,程序崩溃-->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
开机自动启动服务和应用的实现
当我们开机时系统会发送一个广播,我们可以在将要开机启动的应用中添加一个静态的广播接收器,在onreceive()中按照上面的启动一个应用来启动我们自己的这个应用,就实现了开机启动,也可以在onreceive()中启动服务,就可以启动服务了,包名同样有上面的问题。记得添加上面的权限。
例子:
广播:
public class OpenAppBrooadcaseReceiverextends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
//若要启动一个服务我们可以直接启动
/*Intent service=new Intent("");//""中是服务的动作或服务的名称
context.startService(service);*/
//启动这个应用:他的动作是我们程序入口的activity所在的包名
Intent openAppIntent = context.getPackageManager().getLaunchIntentForPackage("com.example.horizontalscrollview_listview");
context.startActivity(openAppIntent);
}
}
清单文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.text.test"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8" android:targetSdkVersion="21" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.text.test.MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name="com.example.horizontalscrollview_listview.OpenAppBrooadcaseReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</receiver>
</application>
</manifest>
项目下载:https://yunpan.cn/cMuwMTXhtkr7h (提取码:e18d)
https://yunpan.cn/cMuVEuIrWXakQ (提取码:a1d5)
- 一个应用启动另一个应用+开机启动应用
- 一个应用启动另一个应用
- 在一个应用启动另一个应用
- Android应用启动另一个应用
- Android启动另一个应用
- Android启动另一个应用
- 启动另一个应用
- 启动另一个应用
- android开机启动应用
- Android 开机启动应用
- Android开机启动应用
- 应用开机自启动
- android 开机启动应用
- android 在一个应用中启动另一个应用
- 在一个应用中启动另一个已安装的应用
- 一个应用中启动另一个应用的几种方式
- Android 一个应用启动另一个应用的说明
- android 在一个应用中启动另一个应用
- Android疑难问题解决记录
- mysql的锁机制(1)
- 二叉树的增删改查
- leetcode_c++:树:Recover Binary Search Tree(099)
- python+webdriver自动化测试第一天
- 一个应用启动另一个应用+开机启动应用
- java编程题及答案
- Spark相关
- JDBC/InvocationHandler动态代理实现数据库连接池、数据源
- L2-013. 红色警报-PAT团体程序设计天梯赛GPLT(图的连通分量个数统计)
- WPF中的命令(一)- 使用命令的步骤
- Nike Shoes younger sister for more
- 使用EmBitz编译mbed提示mbed_wait_api.c:(.text.wait+0x0): multiple definition of `wait'
- ConcurrentHashMap从jdk1.7到jdk1.8的变化