怎么判断应用已经安装完了?

kacyan 2013-12-09 03:52:16
做一个下载、安装、删除的程序,代码我都写好了。
下载好后自动安装也可以实现,但是删除不知道要什么时候执行了啊。。
应该怎么判断已经安装好了,然后去删除安装包啊?
就写在安装后面的话,会出现先删除安装包,然后无法安装了的情况。。
...全文
302 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
这广播写得好
qiuqingpo 2013-12-10
  • 打赏
  • 举报
回复
值得学习呢s
aaaabbbccd9876 2013-12-10
  • 打赏
  • 举报
回复
学习了
kacyan 2013-12-10
  • 打赏
  • 举报
回复
额,给我了很好的思路,谢谢啦。。 不过本人还是新手,广播都不太会用,慢慢研究下,怎么和上面的安装结合起来。
Simple魏 2013-12-09
  • 打赏
  • 举报
回复
引用 6 楼 u011545493 的回复:
[quote=引用 5 楼 AA5279AA 的回复:] 安装完了会有广播的

private class InstallReceiver extends BroadcastReceiver{  
        @Override  
        public void onReceive(Context context, Intent intent) {  
            // TODO Auto-generated method stub  
            if(intent.getAction().equals(Intent.ACTION_PACKAGE_ADDED)){  
                //Toast.makeText(context, intent.getDataString().substring(8), 2000).show();  
                String packName = intent.getDataString().substring(8);
                //packName为所安装的程序的包名  
                allPackage.add(packName);
                for(InstallAppInfo info:installAppMap.values()){
                	if(info.getPackageName().equals(packName)){
                		installAppMap.remove(info.getId());
                		JSONObject install=new JSONObject();
                		try {
    						install.put("package_name", packName);
    						install.put("result", true);
    					} catch (JSONException e) {
    						Log_E("in class InstallReceiver and get install object occur error");
    					}
                		callJavaScriptMethod(installcallback, install.toString());
                		break;
                	}
                }
            }  
        }  
    }  
额,这广播没看懂啊。。 求大神指点啊。。[/quote] private class InstallReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub if(intent.getAction().equals(Intent.ACTION_PACKAGE_ADDED)){ //Toast.makeText(context, intent.getDataString().substring(8), 2000).show(); String packName = intent.getDataString().substring(8); //packName为所安装的程序的包名 //根据packName,再进行比对 } } }
Simple魏 2013-12-09
  • 打赏
  • 举报
回复
可以用安装广播监听是否有应用安装,触发安装广播后,根据包名,再比对下你的列表,然后再进行删除。
kacyan 2013-12-09
  • 打赏
  • 举报
回复
引用 5 楼 AA5279AA 的回复:
安装完了会有广播的

private class InstallReceiver extends BroadcastReceiver{  
        @Override  
        public void onReceive(Context context, Intent intent) {  
            // TODO Auto-generated method stub  
            if(intent.getAction().equals(Intent.ACTION_PACKAGE_ADDED)){  
                //Toast.makeText(context, intent.getDataString().substring(8), 2000).show();  
                String packName = intent.getDataString().substring(8);
                //packName为所安装的程序的包名  
                allPackage.add(packName);
                for(InstallAppInfo info:installAppMap.values()){
                	if(info.getPackageName().equals(packName)){
                		installAppMap.remove(info.getId());
                		JSONObject install=new JSONObject();
                		try {
    						install.put("package_name", packName);
    						install.put("result", true);
    					} catch (JSONException e) {
    						Log_E("in class InstallReceiver and get install object occur error");
    					}
                		callJavaScriptMethod(installcallback, install.toString());
                		break;
                	}
                }
            }  
        }  
    }  
额,这广播没看懂啊。。 求大神指点啊。。
失落夏天 版主 2013-12-09
  • 打赏
  • 举报
回复
安装完了会有广播的

private class InstallReceiver extends BroadcastReceiver{  
        @Override  
        public void onReceive(Context context, Intent intent) {  
            // TODO Auto-generated method stub  
            if(intent.getAction().equals(Intent.ACTION_PACKAGE_ADDED)){  
                //Toast.makeText(context, intent.getDataString().substring(8), 2000).show();  
                String packName = intent.getDataString().substring(8);
                //packName为所安装的程序的包名  
                allPackage.add(packName);
                for(InstallAppInfo info:installAppMap.values()){
                	if(info.getPackageName().equals(packName)){
                		installAppMap.remove(info.getId());
                		JSONObject install=new JSONObject();
                		try {
    						install.put("package_name", packName);
    						install.put("result", true);
    					} catch (JSONException e) {
    						Log_E("in class InstallReceiver and get install object occur error");
    					}
                		callJavaScriptMethod(installcallback, install.toString());
                		break;
                	}
                }
            }  
        }  
    }  
kacyan 2013-12-09
  • 打赏
  • 举报
回复
引用 3 楼 hjywyj 的回复:
[quote=引用 2 楼 u011545493 的回复:] [quote=引用 1 楼 tanwei4199 的回复:] 你是自己实现安装还是通过系统安装? 前者的话 有个监听 class PackageInstallObserver extends IPackageInstallObserver.Stub { 后者的话 可以监听广播来判断是否安装完
public void install() { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType( Uri.parse("file://" + SD_PATH + fileName), "application/vnd.android.package-archive"); context.startActivity(intent); } 安装方法。。 这应该怎么样判断啊?[/quote] 这又不是静默安装,不用判断吧[/quote] 额。 那我也怎么在这安装完后,删除安装文件啊。。 我试过在这方法后面直接加删除,结果就会安装包先被删除了。。
  • 打赏
  • 举报
回复
引用 2 楼 u011545493 的回复:
[quote=引用 1 楼 tanwei4199 的回复:] 你是自己实现安装还是通过系统安装? 前者的话 有个监听 class PackageInstallObserver extends IPackageInstallObserver.Stub { 后者的话 可以监听广播来判断是否安装完
public void install() { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType( Uri.parse("file://" + SD_PATH + fileName), "application/vnd.android.package-archive"); context.startActivity(intent); } 安装方法。。 这应该怎么样判断啊?[/quote] 这又不是静默安装,不用判断吧
kacyan 2013-12-09
  • 打赏
  • 举报
回复
引用 1 楼 tanwei4199 的回复:
你是自己实现安装还是通过系统安装? 前者的话 有个监听 class PackageInstallObserver extends IPackageInstallObserver.Stub { 后者的话 可以监听广播来判断是否安装完
public void install() { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType( Uri.parse("file://" + SD_PATH + fileName), "application/vnd.android.package-archive"); context.startActivity(intent); } 安装方法。。 这应该怎么样判断啊?
荒颜 2013-12-09
  • 打赏
  • 举报
回复
你是自己实现安装还是通过系统安装? 前者的话 有个监听 class PackageInstallObserver extends IPackageInstallObserver.Stub { 后者的话 可以监听广播来判断是否安装完

80,492

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧