① android 判断某个应用是否正在运行
在手机安全中心或者手机管理中心可以看见后台管理,点击进去就会看见;还有一种方法就是在手机设置中,应用程序中就可以看见。
查看正在运行软件的方法:
打开手机设置。
在设置中找到应用选项,点击应用。
应用里会看见应用程序,点击进去。
看到个人应用、系统应用、正在运行三栏。
点击正在运行就会看到所有正在运行的软件了。
② android 判断一个文件是否存在
sd卡目录请不要直接使用/storage/sdcard0/,你这样试试
String SDPATH = Environment.getExternalStorageDirectory().getPath() + "//";
File f = new File(SDPATH +"/Manual/test.pdf")
另外你是不是忘记加权限了<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
③ Android Google map包是否存在判断
首先在AndroidManifest.xml 添加设置android:required 为false使没有google map 包的手机可以安装应用 然后在使用地图之前判断:view sourceprint?1 try {2 Class.forName("com.google.android.maps.MapActivity");3 } catch (Exception e) {4 return;5 }
④ android代码混淆以及怎么判断一个apk代码是否被混淆过
方案一:
一、 下载dex2jar包,解压
二、把apk包的后缀名改为.zip
三、把apk压解压拿到classes.dex文件,并放到dex2jar所在的目录下
四、运行命令dex2jar.exe classes.dex
五、下载jd-gui
六、把jar包加载到jd.gui,查看源码,源码中的类名,方法名,变量名是否已经改变
方法二:
一、下载apktool工具
二、运行apktool.bat d xxx.apk,把apk反编译成smali
三、如果想要进一步查看源码,可下载smali2java
四、使用smali文件的文件名进行分析,如果存在1个或1个以上的资源类的smali文件,就可以证明该apk没有被混淆过。
⑤ 怎么打开第三方应用程序
需求场景:
在自己开发的应用程序里,有个跳转到其他应用的按钮,比如分享到“新浪微博”,当点击这个按钮时,先判断手机中是否有安装“新浪微博”这个程序,有则启动“新浪微博”客户端,否则从指定的URL地址进行下载。
简言之,开启其他应用,包名跳转。
1、从一个应用跳转到其他应用要获取什么信息?
need第三方应用的包名,以及下载链接。
2、如何判断本机是否已经安装了该第三方应用?
(1)首先得到该程序的包名;
别人的应用程序我怎么知道他的包名和类名?
- 通过adb里面看程序装的所有应用
- 写一个遍历程序,获取所有已安装的程序,把包名打印出来,新浪微博的包名中应该会带有sina字眼,如 com.sina.weibo
//获取已经安装apk列表
List<PackageInfo> packList = context.getPackageManager().getInstalledPackages(0);
//获得包名PackageInfo.packageName
(2)然后通过PackageManager判断是否存在该包的程序 。
android的每一个apk的activity的包的名字都是唯一的,所以可以通过判断这个activity所在包的名字来判断是不是该Apk已经安装
例1:
//以twitter程序为例,假设twitter程序包名为“com.twitter.android”。这时候可用以下代码来判断是否被安装。
//QQ客户端的包名是"com.tencent.mobileqq"
PackageInfo packageInfo;//PackageInfo所在包为android.content.pm
try {
packageInfo = this.getPackageManager().getPackageInfo("com.twitter.android", 0);
} catch (NameNotFoundException e) {
packageInfo = null;
e.printStackTrace();
}
if(packageInfo ==null){
System.out.println("没有安装");
}else{
System.out.println("已经安装");
}
例2:可以封装到方法里,操作一样,只是把包名作为参数传入,返回值为布尔类型
private boolean isPkgInstalled(String pkgName) {
PackageInfo packageInfo = null;
try {
packageInfo = this.getPackageManager().getPackageInfo(pkgName, 0);
} catch (NameNotFoundException e) {
packageInfo = null;
e.printStackTrace();
}
if (packageInfo == null) {
return false;
} else {
return true;
}
3、怎么跳转?
通过隐式intent跳转
例3:PackageManager中有getLaunchIntentForPackage这个方法!
//String pkg代表包名,String download代表下载url
final PackageManager pm = context.getPackageManager();
Intent intent = pm.getLaunchIntentForPackage(pkg);
if (null == intent) {//没有获取到intent
if (!TextUtils.isEmpty(downoad)) {//跳转到下载第三方应用界面
context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(downoad)));
}
} else {
context.startActivity(intent);
}
例4:在我们自己的程序中调用其他程序时往往要检查手机有没有安装该软件后再做相应操作,如没有安装,用intent将用户引导至android market去下载该程序,如已安装则打开该程序,并传入参数和调用其功能。
//下面介绍怎么判断手机已安装某程序的方法:
private 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);
}
}
return pName.contains(packageName);//判断pName中是否有目标程序的包名,有TRUE,没有FALSE
}
//下面是调用该方法进行判断后的逻辑:
//已安装,打开程序,需传入参数包名:"com.skype.android.verizon"
if(isAvilible(this, "com.skype.android.verizon")){
Intent i = new Intent();
ComponentName cn = new ComponentName("com.skype.android.verizon",
"com.skype.android.verizon.SkypeActivity");
i.setComponent(cn);
startActivityForResult(i, RESULT_OK);
}
//未安装,跳转至market下载该程序
else {
Uri uri = Uri.parse("market://details?id=com.skype.android.verizon");//id为包名
Intent it = new Intent(Intent.ACTION_VIEW, uri);
startActivity(it);
}
参考链接:http://www.eoeandroid.com/thread-152763-1-1.html?_dsign=2242c74c
4、跳转后呢?
如何在android应用程序中启动其他apk程序,被启动程序退出后返回之前的程序?
//你只需要在A中打开B,并为B设置 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//不做对A的关闭处理finish() 这样就可以了
Intent intent=new Intent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setComponent(new ComponentName(objAppClassName, mainActivity));
context.startActivity(intent);
例5:原始跳转方法,要包名和类名(通过ComponentName),后来可以只要包名…
Android 开发有时需要在一个应用中启动另一个应用,比如Launcher加载所有的已安装的程序的列表,当点击图标时可以启动另一个应用。
一般我们知道了另一个应用的包名和MainActivity的名字之后便可以直接通过如下代码来启动:
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
ComponentName cn = new ComponentName(packageName, className);
intent.setComponent(cn);
startActivity(intent);
但是更多的时候,我们一般都不知道应用程序的启动Activity的类名,而只知道包名,我们可以通过ResolveInfo类来取得启动Acitivty的类名。
下面是实现代码:
private void openApp(String packageName) {
PackageInfo pi = getPackageManager().getPackageInfo(packageName, 0);
Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
resolveIntent.setPackage(pi.packageName);
List<ResolveInfo> apps = pm.queryIntentActivities(resolveIntent, 0);
ResolveInfo ri = apps.iterator().next();
if (ri != null ) {
String packageName = ri.activityInfo.packageName;
String className = ri.activityInfo.name;
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
ComponentName cn = new ComponentName(packageName, className);
intent.setComponent(cn);
startActivity(intent);
}
}
⑥ 安卓手机的软件安装包存在哪里哪些文件
如果手机没有‘我的文件’这个软件,那么你需要连接电脑下载豌豆荚,然后下载一个‘文件管理‘,之后下载的软件就可以在里面看见了。
⑦ android怎样检测包名是否存在
/**
* 判断应用是否已经启动
*
* @param context 一个context
* @param packageName 要判断应用的包名
* @return boolean
*/
public static boolean isAppAlive(Context context, String packageName) {
ActivityManager activityManager =
(ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> processInfos
= activityManager.getRunningAppProcesses();
List<ActivityManager.RunningTaskInfo> task_info = activityManager
.getRunningTasks(20);
String className = "";
for (int i = 0; i < task_info.size(); i++) {
if (packageName.equals(task_info.get(i).topActivity.getPackageName())) {
return true;
}
}
⑧ android怎么判断是否保存在本地存储
Android支持在SD卡上的应用私有目录,在Froyo版本后,通过getExternalFilesDir()可以获得具体路径。该路径依赖与应用的包名,如果你包为hello.file那么SD开上的应用私有目录为mntsdcardAndroiddatahello.filefiles.
在使用SD卡目录时,需注意SD卡是否挂载,可通过Environment.getExternalStorageState()方法进行判断,如果返回值为Envirnment.MEDIA_MOUNTED表示SD卡处于挂载状态,可以放心使用。
⑨ android判断一个线程是否存在
线程如果是一直运行的,就检测service是否已经启动,启动了就不开启线程。每次开启程序就启动服务,线程也新建,建议看一下service的生命周期。。