美文网首页
手机管家(第一天)

手机管家(第一天)

作者: 北方的天空2000 | 来源:发表于2018-11-24 11:12 被阅读7次

开启APP,进入WelcomeActivity,透明度由0到1,持续3秒,主要有:透明度的变化+更新逻辑

透明度由0到1,持续3秒
更新逻辑:获取本地与服务器中的VersionCode,判断是否更新,是则下载app,下载完成后弹出安装app的dialog,是:进入安装界面,否:进入主界面。

透明度的变化

ScaleAnimation animation = new ScaleAnimation(1.0f, 1.5f, 1.0f, 1.5f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
animation.setDuration(3000);
layoutRoot.startAnimation(animation);

获取versionName + versionCode#

PackageManager pm = getPackageManager();
try {
    PackageInfo info = pm.getPackageInfo("com.qihu.mobilesafe", PackageManager.GET_ACTIVITIES);
    localVersionName = info.versionName;
    localVersionCode = info.versionCode;
} catch (PackageManager.NameNotFoundException e) {
    e.printStackTrace();
}

下载app

下载框架采用的是xUtils2.6.4

 HttpUtils http = new HttpUtils(5000);
String url = NetUrl.BASE_URL + updateUrl;
String target = Environment.getExternalStorageDirectory().getAbsolutePath() + "/mobileSafe.apk";
//        RequestParams params = new RequestParams();
//        params.addBodyParameter("name","cui");
http.download(url, target, new RequestCallBack<File>() {
    @Override
    public void onLoading(long total, long current, boolean isUploading) {
        super.onLoading(total, current, isUploading);
        tv2.setText(current + "/" + total);
    }

    @Override
    public void onSuccess(ResponseInfo<File> responseInfo) {
        installApp(responseInfo.result.getAbsolutePath());
    }

    @Override
    public void onFailure(HttpException e, String s) {
        enterHome();
    }
});

由于onSuccess(ResponseInfo<File> responseInfo)返回的是ResponseInfo<File>,若想获取T对象,那么采用responseInfo.result即可。

进入安装界面

Intent intent = new Intent();
intent.setAction("android.intent.action.VIEW");
intent.addCategory("android.intent.category.DEFAULT");
Uri data = Uri.parse("file://" + path);
intent.setDataAndType(data, "application/vnd.android.package-archive");
startActivityForResult(intent, 0);

对应的是

<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>

卸载APP需满足的intent-filter

<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>

主界面:GridView

主界面采用的是GridView,也有setAdapter(...)setOnItemClickListener(...)

<GridView
    android:id="@+id/gridView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:numColumns="3"
    android:horizontalSpacing="5dp"
    android:verticalSpacing="3dp"
    android:listSelector="@android:drawable/list_selector_background"/>
gridView.setAdapter(new MyAdapeter());
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
        ToastUtil.shortToast(MainActivity.this,array[i]);
    }
});

相关文章

网友评论

      本文标题:手机管家(第一天)

      本文链接:https://www.haomeiwen.com/subject/gzcxottx.html