[rk3188] 在系统中实现伪静默安装

平台:rk3188

系统:5.1

实现方式就是将安装提示界面去除,安装完成启动apk。

diff --git a/packages/apps/PackageInstaller/AndroidManifest.xml b/packages/apps/PackageInstaller/AndroidManifest.xml
old mode 100644
new mode 100755
index acab0146f3..3a3533f4fb
--- a/packages/apps/PackageInstaller/AndroidManifest.xml
+++ b/packages/apps/PackageInstaller/AndroidManifest.xml
@@ -24,6 +24,7 @@
             android:supportsRtl="true">
 
         <activity android:name=".PackageInstallerActivity"
+                android:theme="@android:style/Theme.NoDisplay"
                 android:configChanges="orientation|keyboardHidden|screenSize"
                 android:excludeFromRecents="true">
             <intent-filter>
@@ -46,6 +47,7 @@
         </activity>
 
         <activity android:name=".InstallAppProgress"
+                android:theme="@android:style/Theme.NoDisplay"
                 android:configChanges="orientation|keyboardHidden|screenSize"
                 android:exported="false" />
 
diff --git a/packages/apps/PackageInstaller/src/com/android/packageinstaller/InstallAppProgress.java b/packages/apps/PackageInstaller/src/com/android/packageinstaller/InstallAppProgress.java
index d51cab1dd2..19eae6d46f 100755
--- a/packages/apps/PackageInstaller/src/com/android/packageinstaller/InstallAppProgress.java
+++ b/packages/apps/PackageInstaller/src/com/android/packageinstaller/InstallAppProgress.java
@@ -88,15 +88,17 @@ public class InstallAppProgress extends Activity implements View.OnClickListener
                         return;
                     }
                     // Update the status text
-                    mProgressBar.setVisibility(View.INVISIBLE);
+                    /*zwq add */
+                  //  mProgressBar.setVisibility(View.INVISIBLE);
                     // Show the ok button
                     int centerTextLabel;
                     int centerExplanationLabel = -1;
                     LevelListDrawable centerTextDrawable =
                             (LevelListDrawable) getDrawable(R.drawable.ic_result_status);
                     if (msg.arg1 == PackageManager.INSTALL_SUCCEEDED) {
+                        /*zwq add 
                         mLaunchButton.setVisibility(View.VISIBLE);
-                        centerTextDrawable.setLevel(0);
+                        centerTextDrawable.setLevel(0);*/
                         centerTextLabel = R.string.install_done;
                         // Enable or disable launch button
                         mLaunchIntent = getPackageManager().getLaunchIntentForPackage(
@@ -109,11 +111,14 @@ public class InstallAppProgress extends Activity implements View.OnClickListener
                                 enabled = true;
                             }
                         }
-                        if (enabled) {
+                            startActivity(mLaunchIntent);
+                            finish();
+                        //zwq add 
+                  /*      if (enabled) {
                             mLaunchButton.setOnClickListener(InstallAppProgress.this);
                         } else {
                             mLaunchButton.setEnabled(false);
-                        }
+                        }*/
                     } else if (msg.arg1 == PackageManager.INSTALL_FAILED_INSUFFICIENT_STORAGE){
                         showDialogInner(DLG_OUT_OF_SPACE);
                         return;
@@ -138,8 +143,9 @@ public class InstallAppProgress extends Activity implements View.OnClickListener
                     } else {
                         mExplanationTextView.setVisibility(View.GONE);
                     }
-                    mDoneButton.setOnClickListener(InstallAppProgress.this);
+                   mDoneButton.setOnClickListener(InstallAppProgress.this);
                     mOkPanel.setVisibility(View.VISIBLE);
+                
                     break;
                 default:
                     break;
@@ -224,6 +230,7 @@ public class InstallAppProgress extends Activity implements View.OnClickListener
     }
 
     public void initView() {
+        /*zwq add */
         setContentView(R.layout.op_progress);
         int installFlags = 0;
         PackageManager pm = getPackageManager();
@@ -249,15 +256,22 @@ public class InstallAppProgress extends Activity implements View.OnClickListener
         }
         mLabel = as.label;
         PackageUtil.initSnippetForNewApp(this, as, R.id.app_snippet);
+        /*zwq add */
         mStatusTextView = (TextView)findViewById(R.id.center_text);
         mStatusTextView.setText(R.string.installing);
+        mStatusTextView.setVisibility(View.GONE);
         mExplanationTextView = (TextView) findViewById(R.id.center_explanation);
+        mExplanationTextView.setVisibility(View.GONE);
         mProgressBar = (ProgressBar) findViewById(R.id.progress_bar);
         mProgressBar.setIndeterminate(true);
+        mProgressBar.setVisibility(View.GONE);
         // Hide button till progress is being displayed
         mOkPanel = (View)findViewById(R.id.buttons_panel);
+        mOkPanel.setVisibility(View.GONE);
         mDoneButton = (Button)findViewById(R.id.done_button);
+        mDoneButton.setVisibility(View.GONE);
         mLaunchButton = (Button)findViewById(R.id.launch_button);
+        mLaunchButton.setVisibility(View.GONE);
         mOkPanel.setVisibility(View.INVISIBLE);
 
         String installerPackageName = getIntent().getStringExtra(
diff --git a/packages/apps/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java b/packages/apps/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java
old mode 100644
new mode 100755
index e600dd8f9d..92462f17d1
--- a/packages/apps/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java
+++ b/packages/apps/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java
@@ -111,7 +111,7 @@ public class PackageInstallerActivity extends Activity implements OnCancelListen
     private static final int DLG_ADMIN_RESTRICTS_UNKNOWN_SOURCES = DLG_BASE + 6;
 
     private void startInstallConfirm() {
-        TabHost tabHost = (TabHost)findViewById(android.R.id.tabhost);
+      /*  TabHost tabHost = (TabHost)findViewById(android.R.id.tabhost);
         tabHost.setup();
         ViewPager viewPager = (ViewPager)findViewById(R.id.pager);
         TabsAdapter adapter = new TabsAdapter(this, tabHost, viewPager);
@@ -224,7 +224,56 @@ public class PackageInstallerActivity extends Activity implements OnCancelListen
                     mOkCanInstall = true;
                 }
             });
-        }
+        }*/
+        
+        /*zwq add */
+        mOkCanInstall = true;
+        
+        if (mOkCanInstall) {
+                mInstallFlowAnalytics.setInstallButtonClicked();
+                if (mSessionId != -1) {
+                    mInstaller.setPermissionsResult(mSessionId, true);
+
+                    // We're only confirming permissions, so we don't really know how the
+                    // story ends; assume success.
+                    mInstallFlowAnalytics.setFlowFinishedWithPackageManagerResult(
+                            PackageManager.INSTALL_SUCCEEDED);
+                } else {
+                    // Start subactivity to actually install the application
+                    Intent newIntent = new Intent();
+                    newIntent.putExtra(PackageUtil.INTENT_ATTR_APPLICATION_INFO,
+                            mPkgInfo.applicationInfo);
+                    newIntent.setData(mPackageURI);
+                    newIntent.setClass(this, InstallAppProgress.class);
+                    newIntent.putExtra(InstallAppProgress.EXTRA_MANIFEST_DIGEST, mPkgDigest);
+                    newIntent.putExtra(
+                            InstallAppProgress.EXTRA_INSTALL_FLOW_ANALYTICS, mInstallFlowAnalytics);
+                    String installerPackageName = getIntent().getStringExtra(
+                            Intent.EXTRA_INSTALLER_PACKAGE_NAME);
+                    if (mOriginatingURI != null) {
+                        newIntent.putExtra(Intent.EXTRA_ORIGINATING_URI, mOriginatingURI);
+                    }
+                    if (mReferrerURI != null) {
+                        newIntent.putExtra(Intent.EXTRA_REFERRER, mReferrerURI);
+                    }
+                    if (mOriginatingUid != VerificationParams.NO_UID) {
+                        newIntent.putExtra(Intent.EXTRA_ORIGINATING_UID, mOriginatingUid);
+                    }
+                    if (installerPackageName != null) {
+                        newIntent.putExtra(Intent.EXTRA_INSTALLER_PACKAGE_NAME,
+                                installerPackageName);
+                    }
+                    if (getIntent().getBooleanExtra(Intent.EXTRA_RETURN_RESULT, false)) {
+                        newIntent.putExtra(Intent.EXTRA_RETURN_RESULT, true);
+                        newIntent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
+                    }
+                    if(localLOGV) Log.i(TAG, "downloaded app uri="+mPackageURI);
+                    startActivity(newIntent);
+                }
+                finish();
+            } else {
+                mScrollView.pageScroll(View.FOCUS_DOWN);
+            }
     }
 
     private void showDialogInner(int id) {

修改还是有优化的地方,这里只是实现了这个功能,以后慢慢来优化。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: RK3188是一种处理器芯片,它可以安装不同的操作系统和固件包。如果你想刷机系统固件包,可以按照以下步骤操作: 首先,你需要找到适合你手机型号的刷机固件包。这个固件包需要与你的硬件才能兼容。你可以在网上搜索或者在一些专业的手机论坛上寻找相关信息。 其次,你需要拥有一个可以进行刷机操作的软件工具。这个工具可以在网上搜索到。如果你没有技术经验,最好在专业人员的指导下进行操作,以免操作失误而导致手机无法正常使用。 接着,你需要先备份你的手机数据。刷机操作会清除你的手机的所有数据,所以一定要先将重要的数据备份到其他设备或云存储。 然后,你可以开始刷机操作了。进入刷机模式,将准备好的固件包加载到工具,然后跟随工具操作提示进行刷机操作。 最后,等待刷机操作结束并成功启动系统,检查系统是否正常运行。如果出现问题,可以通过重新刷机回到原来的系统或者寻求专业维修服务。刷机操作需要谨慎操作,不可轻视。 ### 回答2: rk3188是一种基于ARM架构的CPU芯片,广泛应用于各种智能设备rk3188刷机系统固件包就是一种针对该芯片设计的操作系统固件,可以用于更新或替换原始的操作系统。 为什么需要刷机系统固件包呢?有几个原因可能会推动用户这么做: 1.升级系统版本:刷机系统固件包可以让用户升级操作系统到最新版本,以获得更好的性能和功能。 2.修复软件问题:有时候,设备可能会遇到软件方面的问题,例如卡顿、死机等,刷机系统固件包可以帮助解决这些问题。 3.使用支持更多应用的系统:刷机系统固件包集成了许多常用的应用和功能,可能支持用户原来使用不了的应用软件。 刷机系统固件包需要慎重操作,因为错误的操作可能会导致设备无法正常使用。操作前须备份重要数据,并确保下载的固件包与设备型号完全匹配。此外,刷机断或失败时,最好没有会阻挡整个刷机过程的断,避免数据损坏。 总之,刷机系统固件包是一个有效的更新或修复设备问题的方法,但需要慎重以避免不必要的风险和损失。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值