最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

安卓App自启动,两种不同的方式!!!支持到安卓4.4

IT圈 admin 4浏览 0评论

安卓App自启动,两种不同的方式!!!支持到安卓4.4

初衷

自己给车机买了CarPlay盒子,但是车机启动后需要点击App才能使用,十分拉闸!!!所以做了这个自启动器。

README!

因为
它是apk文件
它是基于安卓4.4开发的

所以
它能安装到所有的安卓平台上
它只能安装到安卓4.4以后的机子上

开发

开机程序自启代码【主要在AndroidManifest.xml】

// An highlighted block
<manifest xmlns:android=""android:installLocation="internalOnly"xmlns:tools=""><uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /><!--    悬浮窗--><uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /><applicationandroid:allowBackup="true"android:dataExtractionRules="@xml/data_extraction_rules"android:fullBackupContent="@xml/backup_rules"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/Theme.MyApplication"tools:targetApi="31"><activityandroid:name=".MainActivity"android:exported="true"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /><category android:name="android.intent.category.APP_MAPS"/><category android:name="android.intent.category.HOME" /><category android:name="android.intent.category.DEFAULT" /></intent-filter><meta-dataandroid:name="android.app.lib_name"android:value="" /></activity><receiverandroid:name=".BaseReceiver"android:enabled="true"android:exported="true"><intent-filter android:priority="1000"><action android:name="android.intent.action.BOOT_COMPLETED" /></intent-filter></receiver></application></manifest>

主要的逻辑代码

//展示包名try {Context ctx = MainActivity.this;PackageManager packageManager = ctx.getPackageManager();//获取所有安装的appList<PackageInfo> installedPackages = packageManager.getInstalledPackages(0);ArrayList<String> listItem = new ArrayList<String>();for(PackageInfo info : installedPackages){String packageName = info.packageName;//app包名ApplicationInfo ai = packageManager.getApplicationInfo(packageName, 0);String appName = (String) packageManager.getApplicationLabel(ai);//获取应用名称String showItem = appName + "____" + packageName;listItem.add(showItem);}ArrayAdapter<String> adapter =new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,listItem);listView.setAdapter(adapter);listView.setOnItemClickListener(new MyOnItemClickListener());}catch (Exception ex){}//申请悬浮窗权限try{//检查是否已经授予权限,大于6.0的系统适用,小于6.0系统默认打开,无需理会if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !Settings.canDrawOverlays(this)) {//没有权限,须要申请权限,由于是打开一个受权页面,因此拿不到返回状态的,因此建议是在onResume方法中重新执行一次校验Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);intent.setData(Uri.parse("package:" + getPackageName()));startActivity(intent);}}catch (Exception ex){}//启动跳转程序String ss = "";try{//启动从文件中读取包名字Context ctx = MainActivity.this;SharedPreferences sp = ctx.getSharedPreferences("SP", MODE_PRIVATE);EditText editText = findViewById(R.id.txtPackName);editText.setText(sp.getString("PKG", "none"));ss = sp.getString("PKG", "none");}catch (Exception ex){}//第一种方式启动try {if(!ss.equals("none")){Intent intent = getPackageManager().getLaunchIntentForPackage(ss);if (intent != null) {intent.putExtra("type", "110");intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);startActivity(intent);}}}catch(Exception ex) {}//第二种方式启动try {if(!ss.equals(("none"))){Intent intent = new Intent();ComponentName cn = new ComponentName(ss, ss+".MainActivity");intent.setComponent(cn);startActivity(intent);}}catch (Exception ex){}

效果

启动后调到对应的App

结语

接触Android半天,简单搞了一下的作品,大佬手下留情,望海涵!
ps:
坑是真多
1、Debug的apk安装不到车机上
2、自己的安卓车机是厂家定制的没有开机广播…所以把应用做成了桌面应用
3、Android studio竟然是全英文的,没有官方汉化…
都是泪…

安卓App自启动,两种不同的方式!!!支持到安卓4.4

初衷

自己给车机买了CarPlay盒子,但是车机启动后需要点击App才能使用,十分拉闸!!!所以做了这个自启动器。

README!

因为
它是apk文件
它是基于安卓4.4开发的

所以
它能安装到所有的安卓平台上
它只能安装到安卓4.4以后的机子上

开发

开机程序自启代码【主要在AndroidManifest.xml】

// An highlighted block
<manifest xmlns:android=""android:installLocation="internalOnly"xmlns:tools=""><uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /><!--    悬浮窗--><uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /><applicationandroid:allowBackup="true"android:dataExtractionRules="@xml/data_extraction_rules"android:fullBackupContent="@xml/backup_rules"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/Theme.MyApplication"tools:targetApi="31"><activityandroid:name=".MainActivity"android:exported="true"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /><category android:name="android.intent.category.APP_MAPS"/><category android:name="android.intent.category.HOME" /><category android:name="android.intent.category.DEFAULT" /></intent-filter><meta-dataandroid:name="android.app.lib_name"android:value="" /></activity><receiverandroid:name=".BaseReceiver"android:enabled="true"android:exported="true"><intent-filter android:priority="1000"><action android:name="android.intent.action.BOOT_COMPLETED" /></intent-filter></receiver></application></manifest>

主要的逻辑代码

//展示包名try {Context ctx = MainActivity.this;PackageManager packageManager = ctx.getPackageManager();//获取所有安装的appList<PackageInfo> installedPackages = packageManager.getInstalledPackages(0);ArrayList<String> listItem = new ArrayList<String>();for(PackageInfo info : installedPackages){String packageName = info.packageName;//app包名ApplicationInfo ai = packageManager.getApplicationInfo(packageName, 0);String appName = (String) packageManager.getApplicationLabel(ai);//获取应用名称String showItem = appName + "____" + packageName;listItem.add(showItem);}ArrayAdapter<String> adapter =new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,listItem);listView.setAdapter(adapter);listView.setOnItemClickListener(new MyOnItemClickListener());}catch (Exception ex){}//申请悬浮窗权限try{//检查是否已经授予权限,大于6.0的系统适用,小于6.0系统默认打开,无需理会if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !Settings.canDrawOverlays(this)) {//没有权限,须要申请权限,由于是打开一个受权页面,因此拿不到返回状态的,因此建议是在onResume方法中重新执行一次校验Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);intent.setData(Uri.parse("package:" + getPackageName()));startActivity(intent);}}catch (Exception ex){}//启动跳转程序String ss = "";try{//启动从文件中读取包名字Context ctx = MainActivity.this;SharedPreferences sp = ctx.getSharedPreferences("SP", MODE_PRIVATE);EditText editText = findViewById(R.id.txtPackName);editText.setText(sp.getString("PKG", "none"));ss = sp.getString("PKG", "none");}catch (Exception ex){}//第一种方式启动try {if(!ss.equals("none")){Intent intent = getPackageManager().getLaunchIntentForPackage(ss);if (intent != null) {intent.putExtra("type", "110");intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);startActivity(intent);}}}catch(Exception ex) {}//第二种方式启动try {if(!ss.equals(("none"))){Intent intent = new Intent();ComponentName cn = new ComponentName(ss, ss+".MainActivity");intent.setComponent(cn);startActivity(intent);}}catch (Exception ex){}

效果

启动后调到对应的App

结语

接触Android半天,简单搞了一下的作品,大佬手下留情,望海涵!
ps:
坑是真多
1、Debug的apk安装不到车机上
2、自己的安卓车机是厂家定制的没有开机广播…所以把应用做成了桌面应用
3、Android studio竟然是全英文的,没有官方汉化…
都是泪…

发布评论

评论列表 (0)

  1. 暂无评论