zoukankan      html  css  js  c++  java
  • Android APK的安装

    打开packagesappsPackageInstaller下的清单文件

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
              package="com.android.packageinstaller">
    
        <original-package android:name="com.android.packageinstaller" />
    
        <uses-permission android:name="android.permission.INSTALL_PACKAGES" />
        <uses-permission android:name="android.permission.DELETE_PACKAGES" />
        <uses-permission android:name="android.permission.CLEAR_APP_CACHE" />
        <uses-permission android:name="android.permission.READ_PHONE_STATE" />
        <uses-permission android:name="android.permission.CLEAR_APP_USER_DATA" />
        <application android:label="@string/app_name"> 
            <activity android:name=".PackageInstallerActivity"
                    android:configChanges="orientation|keyboardHidden"
                    android:theme="@style/TallTitleBarTheme">
                <intent-filter>
                    <action android:name="android.intent.action.VIEW" />
                    <category android:name="android.intent.category.DEFAULT" />
                    <data android:scheme="content" />
                    <data android:scheme="file" />
                    <data android:mimeType="application/vnd.android.package-archive" />
                </intent-filter>
            </activity>
            <activity android:name=".InstallAppProgress"
                    android:configChanges="orientation|keyboardHidden"
                    android:theme="@style/TallTitleBarTheme">
            </activity>
            <activity android:name=".UninstallerActivity"
                    android:configChanges="orientation|keyboardHidden"
                    android:theme="@style/TallTitleBarTheme">
                <intent-filter>
                    <action android:name="android.intent.action.VIEW" />
                    <action android:name="android.intent.action.DELETE" />
                    <category android:name="android.intent.category.DEFAULT" />
                    <data android:scheme="package" />
                </intent-filter>
            </activity>
            <activity android:name=".UninstallAppProgress"
                    android:configChanges="orientation|keyboardHidden"
                    android:theme="@style/TallTitleBarTheme">
            </activity>
        </application>
    </manifest> 

    项目布局:

    <LinearLayout 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:orientation="vertical"
        tools:context=".MainActivity" >
    
        <EditText
            android:id="@+id/et_path"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="请输入apk的路径" />
        <Button
            android:onClick="click"
             android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="安装"
            
            />
    
    </LinearLayout>

    逻辑代码如下:

    public class MainActivity extends Activity {
    
        private EditText et_path;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            et_path = (EditText) findViewById(R.id.et_path);
        }
    
        public void click(View view) {
            String path = et_path.getText().toString().trim();
            /*
             * <action android:name="android.intent.action.VIEW" /> <category
             * android:name="android.intent.category.DEFAULT" /> <data
             * android:scheme="content" /> <data android:scheme="file" /> <data
             * android:mimeType="application/vnd.android.package-archive" />
             */
            Intent intent = new Intent();
            intent.setAction("android.intent.action.VIEW");
            intent.addCategory("android.intent.category.DEFAULT");
            intent.setDataAndType(Uri.fromFile(new File(path)), "application/vnd.android.package-archive");
            startActivity(intent);
        }
    }

    首先需要AndroidManifest.xml中加入安装程序权限:
    <!-- 安装程序权限 -->
    <uses-permission android:name="android.permission.INSTALL_PACKAGES"/>

    接着将一个名为girl.apk的apk导入sdcard,然后运行项目效果如下

    点击安装

  • 相关阅读:
    [转发]深入理解git,从研究git目录开始
    iOS系统网络抓包方法
    charles抓包工具
    iOS多线程中performSelector: 和dispatch_time的不同
    IOS Core Animation Advanced Techniques的学习笔记(五)
    IOS Core Animation Advanced Techniques的学习笔记(四)
    IOS Core Animation Advanced Techniques的学习笔记(三)
    IOS Core Animation Advanced Techniques的学习笔记(二)
    IOS Core Animation Advanced Techniques的学习笔记(一)
    VirtualBox复制CentOS后提示Device eth0 does not seem to be present的解决方法
  • 原文地址:https://www.cnblogs.com/wuyudong/p/5889231.html
Copyright © 2011-2022 走看看