小编Des*_*tor的帖子

从adb命令获取设备信息(例如产品,型号)

实现此目的的一种方法如下:

adb devices -l
Run Code Online (Sandbox Code Playgroud)

示例输出:

123abc12               device product:<id> model:<id> device:<id>
456abc45               device product:<id> model:<id> device:<id>
Run Code Online (Sandbox Code Playgroud)

但是这个列表已经连接了所有设备,但我想获取特定设备的信息.
我只想了解"123abc12"的信息.输出应该是:

123abc12               device product:<id> model:<id> device:<id>
Run Code Online (Sandbox Code Playgroud)

不应显示第二个设备.
我有设备名称,即123abc12,它可以用来获取所需的信息,但我不知道如何.
谢谢.

android adb

69
推荐指数
2
解决办法
10万
查看次数

BufferedReader.readLine阻止我的程序,但BufferedReader.read()正确读取

我有一个片段如下:

Process proc = Runtime.getRuntime().exec(command);
BufferedReader br = new BufferedReader(new InputStreamReader(proc.getErrorStream()));
String line = br.readLine();
Run Code Online (Sandbox Code Playgroud)

现在在上面的代码中我确信该进程将始终具有在线输入,因此我没有使用任何类型的while循环或任何空检查.问题是readLine块.我知道的一个原因是,流没有数据要读取,因此readLine一直在等待.为了检查这一点,我删除了readLine并使用了read()函数,如下所示:

Process proc = Runtime.getRuntime().exec( command );
BufferedReader br = new BufferedReader(new InputStreamReader(proc.getErrorStream()));
int a;
while((a=br.read())!=-1){
    char ch = (char) a;
    if(ch == '\n')
        System.out.print("New line "+ch);
    if(ch == '\r')
        System.out.print("Carriage return "+ch);
    System.out.print(ch);
}
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,这段代码工作并打印出麻烦的新行和回车.现在我想知道为什么readLine块?数据可用,它由换行符终止.还有什么可能的原因?

注意:以上工作偶尔一次!也许一次超过15次.
注意:我也尝试使用ProcessBuilder,但行为相同.

更新:所以我切换到ProcessBuilder,然后我重定向了errorStream,现在当我执行process.getInputStream时,我立刻得到输入流和错误流,这很好.以下是片段.

ProcessBuilder pb = new ProcessBuilder(command.split(" "));
pb..redirectErrorStream(true);
Process proc = pb.start();
BufferedReader br = new BufferedReader(new InputStreamReader(proc.getInputStream()));
String line = br.readLine();
//Now I get both input …
Run Code Online (Sandbox Code Playgroud)

java bufferedreader

12
推荐指数
1
解决办法
1730
查看次数

如何在Windows中的ProcessBuilder java中设置PATH环境变量

我试图在java中为进程构建器设置PATH环境变量,我尝试了以下方法:

ProcessBuilder pb = new ProcessBuilder(command);
Map<String, String> mp = pb.environment();
mp.put("Path", "myPath");
pb.start();
Run Code Online (Sandbox Code Playgroud)

但是以下不起作用,进程构建器选择了默认的系统路径.我遇到了这个问题,这个技巧在我目前的项目中并没有帮助我.我该怎么办才能解决这个问题?

java environment-variables processbuilder

7
推荐指数
1
解决办法
1万
查看次数

如何在Android中获取所有活动通知?

这个问题似乎很熟悉,是的,我一直在寻找解决方案,但是答案不适合我的用例。
我想访问所有活动的通知并在发布新通知之前使用该信息。我知道我们可以使用NotificationListenerService(https://developer.android.com/reference/android/service/notification/NotificationListenerService.html#getActiveNotifications()
来获取AllActiveNotifications,但这将在通知发布回调为被接收者接收。我基本上想在发布新通知之前检查所有活动通知,以免再发布具有相同内容的通知。
为了发布,我使用NotificationManager,如下所示:
NotificationManager nm = mContext.getSystemService(mContext.NOTIFICATION_SERVICE); nm.notify(tag, id, notification);
我不想将通知ID存储在数据库中,并在发布任何新通知时使用它。
我在这里先向您的帮助表示感谢!

更新:
似乎可以通过API23实现:
https : //developer.android.com/reference/android/app/NotificationManager.html#getActiveNotifications()
但是我想知道是否有任何方法可以在21或更低版本中实现。

notifications android

6
推荐指数
0
解决办法
6693
查看次数

adb wait-for-device和adb wait-for-devices之间有什么区别吗?

我使用了两个命令等待设备启动:adb wait-for-device和adb wait-for-devices.两者似乎都在等待设备启动,我发现他们的行为没有任何差别.他们的行为有什么不同吗?

添加更多关于我所做的事情的信息:

所以这就是我所做的,从Android文档中我使用了adb wait-for-device但是有时候在使用这个命令的时候我用它作为adb wait-for-devices,你可以看到我最后添加了额外的's',但命令仍然有效.所以我在想为什么等待设备和等待设备都能正常工作!为什么android会为同一个提供两个命令?

android adb

5
推荐指数
1
解决办法
4369
查看次数

是否有可能杀死在 C 中使用系统 api 启动的命令?如果没有其他选择?

我正在使用系统 api 启动一个命令(我可以将这个 api 与C/C++一起使用)。我传递的命令有时可能会挂起,因此我想在特定超时后终止。

目前我将它用作:

system("COMMAND");
Run Code Online (Sandbox Code Playgroud)

我想像这样使用它:

使用独立于系统的 API 运行命令(我不想使用 CreateProcess,因为它仅适用于 Windows)如果它在“X”分钟后没有退出,则终止该进程。

c c++

5
推荐指数
2
解决办法
4151
查看次数

如何在android中单击通知操作时要求用户解锁设备?


      我正在显示来自我的应用程序的通知,并且此通知中有一个操作,当用户单击该操作时,将使用我设置的意图调用相应的操作类.现在,我想执行一个特定的操作,但在此之前,用户需要解锁屏幕,如果它是针脚/图案保护.我无法要求用户解锁设备,即在锁定屏幕上打开解锁键盘/图案.
以下是我的代码,

    //HandleAction is a java class that extends IntentService
    Intent intent = new Intent(context, HandleAction.class);
    intent.putExtra(key, "my_value"); //Used to send information to action class
    PendingIntent pi = PendingIntent.getService(context, 0, intent,
                                 PendingIntent.FLAG_UPDATE_CURRENT);

    NotificationCompat.Builder notification = new NotificationCompat.Builder(mContext);
    //set the title, icon etc for builder and add action as below
    notification.addAction(icon, "my_label", pi);
Run Code Online (Sandbox Code Playgroud)

当用户点击通知操作时,我将控件发送到MyAction.java中的onHandleIntent.
在这里,我想要求用户在密码保护时解锁设备,然后执行操作.如何在onHandleIntent中请求用户解锁设备?

我发现使用KeyguardManager和KeyguardLock来实现这一点,但是keyguardManager.newKeyguardLock是不推荐使用的方法,我想避免这种情况.所以,下一个是使用"FLAG_TURN_SCREEN_ON"和"FLAG_KEEP_SCREEN_ON",但我无法弄清楚如何在这种情况下使用它们.我没有从我的动作类中启动任何窗口,它只是一个增加我的计数器的操作.点击它后,通知应该消失,执行我的操作就可以了.

我发现了一个类似的问题解锁手机,但它的方式是通过启动虚拟/空活动.

在此先感谢任何帮助,建议:)

java android

5
推荐指数
2
解决办法
1457
查看次数

是否可以访问 html 文件中的环境变量?

我只是想知道我是否访问系统变量(如 PATH 设置或其他环境变量)并使用 html 页面显示它!是否可以?或者有什么方法可以实现这一目标?
这个问题我想了很久!

html

4
推荐指数
1
解决办法
1万
查看次数

是否可以将“完成”按钮的文本更改为“在向导中完成”?

我在eclipse插件中创建了一些页面的自定义向导。通过扩展WizardPage创建页面。该向导具有“下一步”“完成”和“取消”按钮,一切正常。
现在,我想将“完成”按钮的名称/文本更改为“完成”。是否有可能在日食中做到这一点?还是我需要自己提供所有按钮,即使这样也可以。

java eclipse swt eclipse-plugin

4
推荐指数
1
解决办法
2786
查看次数

如何用\?替换字符串中的一个或多个\?

考虑一下字符串,

this\is\\a\new\\string
Run Code Online (Sandbox Code Playgroud)

输出应该是:

this\is\a\new\string
Run Code Online (Sandbox Code Playgroud)

所以基本上一个或多个\角色应该只用一个替换\.我尝试了以下方法:

str = str.replace("[\\]+","\")
Run Code Online (Sandbox Code Playgroud)

但这没用.我用了两个原因\[\\]+是因为内部\存储为\\.我知道这可能是一个基本的正则表达式问题,但我能够替换一个或多个普通字母而不是\字符.任何帮助都非常感谢.

java regex string replace replaceall

4
推荐指数
2
解决办法
1万
查看次数