获取App的信息

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取App的信息相关的知识,希望对你有一定的参考价值。

参考技术A (一)App 信息

1.获取当前界面元素:adb shell dumpsys activity top

2.获取任务列表:adb shell dumpsys activity activities

(二)App入口

1.adb logcat | grep -i displayed

2.aapt dump badging xxx.apk | grep launchable-activity

3.apkanalyzer 最新版本的SDK中才有

(三)启动应用

1. adb shell am start -W -n com.xueqiu.android/ .view.WelcomeActivityAlias -S

(四)常用命令列表

1.adb   2.pm   3.am    4.dumpsys   5.uiautomator  6.input

(五)Android 性能统计 dumpsys

1.获取所有的dumpsys 子命令 dumpsys | grep -i DUMP

2.获取当前activity adb shell dumpsys activity top 

3.获取activity 的记录,可以获取到appium 依赖的原始 accivity dumpsys activity activities

4.获取特定包基本信息 adb shell dumpsys package com.xueqiu.android

5.获取系统通知:adb shell dumpsys notification

6.获取内存信息:adb shell dumpsys meninfo com.android.setting

7.获取cpu 信息 : adb shell dumpsys cpuinfo

8.获取gpu绘制分析 :adb shell dumpsys gfxinfo com.android.settings

9.获取短信 adb shell dumpsys activity broadcasts | grep senderName =

(六)uiautomator

1.adb shell uiautomator runtest .....

2.adb shell uiautomator dump

(七)简单的自动化工具 input 命令

1.text <string> (Default:touchscreen)

2.keyevent [--longpress] <key code number or name> ... (Default:keyboard)

3.tap <x> <y> (Default : touchscreen)

4.swipe <x1> <y1> <x2> <y2> [duration(ms)] (Default:touchscreen)

5.draganddrop <x1> <y1> <x2> <y2> [duration(ms)] (Default:touchscreen)

6.press (Default : trackball)

7.roll <dx> <dy> <Default:trackbal>

iOS利用HealthKit框架从健康app中获取步数信息

微信和QQ的每日步数最近十分火爆,我就想为自己写的项目中添加一个显示每日步数的功能,上网一搜好像并有相关的详细资料,自己动手丰衣足食。

统计步数信息并不需要我们自己去实现,iOS自带的健康app已经为我们统计好了步数数据

我们只要使用HealthKit框架从健康app中获取这个数据信息就可以了

这篇文章对HealthKit框架进行了简单的介绍:http://www.cocoachina.com/ios/20140915/9624.html

对HealthKit框架有了简单的了解后我们就可以开始了

1.如下图所示 在Xcode中打开HealthKit功能

技术分享

2.在需要的地方#import <HealthKit/HealthKit.h>(这里我为了方便直接在viewController写了所有代码,我也在学习这个框架,个人感觉把获取数据权限的代码放在AppDelegate中更好)

获取步数分为两步1.获得权限  2.读取步数 

3.代码部分

@interface ViewController ()

@property (nonatomic, strong) HKHealthStore *healthStore;

@end

 在- (void)viewDidLoad中获取权限

- (void)viewDidLoad {
    [super viewDidLoad];
    
    //查看healthKit在设备上是否可用,ipad不支持HealthKit
    if(![HKHealthStore isHealthDataAvailable])
    {
        NSLog(@"设备不支持healthKit");
    }
    
    //创建healthStore实例对象
    self.healthStore = [[HKHealthStore alloc] init];
    
    //设置需要获取的权限这里仅设置了步数
    HKObjectType *stepCount = [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierStepCount];
    
    NSSet *healthSet = [NSSet setWithObjects:stepCount, nil];
    
    //从健康应用中获取权限
    [self.healthStore requestAuthorizationToShareTypes:nil readTypes:healthSet completion:^(BOOL success, NSError * _Nullable error) {
        if (success)
        {
            NSLog(@"获取步数权限成功");
            //获取步数后我们调用获取步数的方法
            [self readStepCount];
        }
        else
        {
            NSLog(@"获取步数权限失败");
        }
    }];
    
}

 读取步数

//查询数据
- (void)readStepCount
{
    //查询采样信息
    HKSampleType *sampleType = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierStepCount];
    
    //NSSortDescriptors用来告诉healthStore怎么样将结果排序。
    NSSortDescriptor *start = [NSSortDescriptor sortDescriptorWithKey:HKSampleSortIdentifierStartDate ascending:NO];
    NSSortDescriptor *end = [NSSortDescriptor sortDescriptorWithKey:HKSampleSortIdentifierEndDate ascending:NO];
    
    /*查询的基类是HKQuery,这是一个抽象类,能够实现每一种查询目标,这里我们需要查询的步数是一个
    HKSample类所以对应的查询类就是HKSampleQuery。
    下面的limit参数传1表示查询最近一条数据,查询多条数据只要设置limit的参数值就可以了
     */
    HKSampleQuery *sampleQuery = [[HKSampleQuery alloc] initWithSampleType:sampleType predicate:nil limit:1 sortDescriptors:@[start,end] resultsHandler:^(HKSampleQuery * _Nonnull query, NSArray<__kindof HKSample *> * _Nullable results, NSError * _Nullable error) {
        //打印查询结果
        NSLog(@"resultCount = %ld result = %@",results.count,results);
        //把结果装换成字符串类型
        HKQuantitySample *result = results[0];
        HKQuantity *quantity = result.quantity;
        NSString *stepStr = (NSString *)quantity;
        [[NSOperationQueue mainQueue] addOperationWithBlock:^{
            
            //查询是在多线程中进行的,如果要对UI进行刷新,要回到主线程中
            NSLog(@"最新步数:%@",stepStr);
        }];
        
    }];
    //执行查询
    [self.healthStore executeQuery:sampleQuery];
}

 4.现在,我们就已经能够从健康app中读取步数信息了

 5.附上一个简单的小demo:  https://github.com/wl356485255/ReadStepCount (注意更改Bundle ID,并且使用真机进行调试)

 6.我现在也在学习HealthKit框架对这个框架还是比较陌生的,上面只实现了简单的获取步数信息(其他信息也可以通过相同方式获取),代码中有不足的地方希望能够指出。

 

以上是关于获取App的信息的主要内容,如果未能解决你的问题,请参考以下文章

获取App的信息

获取App应用信息

怎么获取ios 设备上 所有app的信息

获取APP的类结构信息

Android获取所有App信息

Android获取所有App信息