android 程序自动检测功能

发布于 2021-11-11 08:46:04 字数 144 浏览 954 评论 5

问题:我想做一个这样的功能!没有思路了,请大家指点下迷津!

第一,我向做一个界面,显示程序的列表

第二,单击程序,判断是否已经在手机里安装,如果安装就直接进入程序,如果没有安装,提示下载安装,在进入程序。

请大家提供点思路哦!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

鹤舞 2021-11-17 00:10:41

网址错误·  要加
http://www.baidu.com 

终陌 2021-11-16 23:54:47

额!我在写代码。代码遇到了点问题:

 

// 已安装,打开程序,需传入参数包名:"com.skype.android.verizon"
if (isAvilible(HomeActivity.this, info.getPageName())) {
	Intent i = new Intent();
	ComponentName cn = new ComponentName(info.getPageName(),
	info.getPageName() + ".SkypeActivity");
	i.setComponent(cn);
	startActivityForResult(i, RESULT_OK);
	}
	// 未安装,跳转至market下载该程序
	else {
	Toast.makeText(HomeActivity.this, "没有安装,请下载", 1).show();
	Uri uri = Uri
	.parse("www.baidu.com");// id为包名
	Intent it = new Intent(Intent.ACTION_VIEW, uri);
	startActivity(it);
				}

// 下面介绍怎么判断手机已安装某程序的方法:
	public boolean isAvilible(Context context, String packageName) {
	final PackageManager packageManager = context.getPackageManager();
// 获取packagemanager
	List<PackageInfo> pinfo = packageManager.getInstalledPackages(0);
// 获取所有已安装程序的包信息
	List<String> pName = new ArrayList<String>();
// 用于存储所有已安装程序的包名
	// 从pinfo中将包名字逐一取出,压入pName list中
	if (pinfo != null) {
	for (int i = 0; i < pinfo.size(); i++) {
	String pn = pinfo.get(i).packageName;
	pName.add(pn);
	}
		}
);
// 判断pName中是否有目标程序的包名,有TRUE,没有FALSE
		return pName.contains(packageName);
	}

报错:

08-01 09:51:31.246: E/test(865): *****************4
08-01 09:51:32.725: E/info(865): *****info:com.dx.ui
08-01 09:51:32.855: D/AndroidRuntime(865): Shutting down VM
08-01 09:51:32.865: W/dalvikvm(865): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
08-01 09:51:32.865: E/AndroidRuntime(865): Uncaught handler: thread main exiting due to uncaught exception
08-01 09:51:32.875: E/AndroidRuntime(865): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=market://details?id=com.skype.android.verizon }
08-01 09:51:32.875: E/AndroidRuntime(865):  at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1408)
08-01 09:51:32.875: E/AndroidRuntime(865):  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378)
08-01 09:51:32.875: E/AndroidRuntime(865):  at android.app.Activity.startActivityForResult(Activity.java:2749)
08-01 09:51:32.875: E/AndroidRuntime(865):  at android.app.Activity.startActivity(Activity.java:2855)
08-01 09:51:32.875: E/AndroidRuntime(865):  at com.softapkxiazai.activity.HomeActivity$1.onItemClick(HomeActivity.java:86)
08-01 09:51:32.875: E/AndroidRuntime(865):  at android.widget.AdapterView.performItemClick(AdapterView.java:284)
08-01 09:51:32.875: E/AndroidRuntime(865):  at android.widget.ListView.performItemClick(ListView.java:3285)
08-01 09:51:32.875: E/AndroidRuntime(865):  at android.widget.AbsListView$PerformClick.run(AbsListView.java:1640)
08-01 09:51:32.875: E/AndroidRuntime(865):  at android.os.Handler.handleCallback(Handler.java:587)
08-01 09:51:32.875: E/AndroidRuntime(865):  at android.os.Handler.dispatchMessage(Handler.java:92)
08-01 09:51:32.875: E/AndroidRuntime(865):  at android.os.Looper.loop(Looper.java:123)
08-01 09:51:32.875: E/AndroidRuntime(865):  at android.app.ActivityThread.main(ActivityThread.java:4363)
08-01 09:51:32.875: E/AndroidRuntime(865):  at java.lang.reflect.Method.invokeNative(Native Method)
08-01 09:51:32.875: E/AndroidRuntime(865):  at java.lang.reflect.Method.invoke(Method.java:521)
08-01 09:51:32.875: E/AndroidRuntime(865):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
08-01 09:51:32.875: E/AndroidRuntime(865):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
08-01 09:51:32.875: E/AndroidRuntime(865):  at dalvik.system.NativeStart.main(Native Method)
08-01 09:51:32.895: I/dalvikvm(865): threadid=7: reacting to signal 3
08-01 09:51:32.895: E/dalvikvm(865): Unable to open stack trace file '/data/anr/traces.txt': Permission denied
08-01 09:51:36.005: I/Process(865): Sending signal. PID: 865 SIG: 9

天涯离梦残月幽梦 2021-11-16 18:58:34

解决思路:

1.从服务器端,获取店铺独立客户端的类名

2.版本号, 本程序最新url

3.然后获取手机系统已经安装好的程序列表,然后比较

4.如果没有安装,就直接跳转到下载的url地址去

蓝颜夕 2021-11-16 01:17:09

应该可以获取手机里面已安装的应用列表吧,拿出来比较下应该就OK了

归属感 2021-11-15 20:40:24

没有意思啊!现在大家的流量都很少,你要是直接下载,就被人恨死了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文