相关疑难解决方法(0)

应用程序如何检测到它将被卸载?

我们所知道的通常(在实践中任何)防病毒应用程序在卸载之前用于触发简单的对话框,例如:"你要卸载应用程序,你确定吗?" - "是/否".

是的,我知道我可以使用intent-filter拦截包删除意图,例如:

<activity
    android:name=".UninstallIntentActivity"
    android:label="@string/app_name" >
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <action android:name="android.intent.action.DELETE" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:scheme="package"  />
    </intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)

但问题很简单,这会拦截任何删除请求,而且这会触发我的应用程序和库存安装程序之间的选择器对话框.因此,如果用户将选择库存安装程序 - 我将无法做任何事情.

我的目标不是阻止用户卸载我的应用程序,而只是回滚我的应用程序所做的更改.

从这些防病毒应用程序中学习我发现这种操作是可行的,所以请帮助我并解释它是如何可能的?

更新

由于有些人不相信它是真的 - 我会参考Avast移动安全:

Anti-Theft通过各种自我保护技术伪装其组件来保护自己免于卸载.

另一个例子:适用于Android的卡巴斯基互联网安全 - 这是卸载它的特殊程序,需要输入密码.

无论如何,这意味着有办法拦截卸载程序,以防止卸载或完成一些最终工作.

android uninstall android-intent

70
推荐指数
3
解决办法
6万
查看次数

android的安装报告失败

如果用户决定报告崩溃,Android的开发人员控制台具有报告运行时崩溃的功能.其他框架具有类似的功能,可在不涉及用户的情况下发送崩溃报告.

有谁知道报告失败的安装或升级的方法?使用android 5.0,我收到越来越多的安装失败的用户报告,但很难从我的应用程序的非技术用户获取日志.

android google-play-services

9
推荐指数
1
解决办法
152
查看次数

有没有办法捕获Web控制台错误?

使用WebView,某些网站需要很长时间才能完成页面加载(如在WebViewClient.onPageFinished()中),并且当发生这种情况时,这可以通过以下类型的Web控制台错误来表征:

E/Web Console(1916): Unsafe JavaScript attempt to access frame with URL
  http://mobile.example.com from frame with URL 
  http://ad.doubleclick.net/adi/interactive.example.com/front_sub;sz=320x50;ord=7340930261983.
  Domains, protocols and ports must match.
  05-26 10:44:15.274: E/Web Console(1916):  at null:1
Run Code Online (Sandbox Code Playgroud)

我希望能够捕获这些错误并以某种方式处理它们.例如,发出消息或与我的应用程序相关的任何内容,此时实际处理与核心问题无关:

有没有办法捕捉这些错误?即以某种方式可以通知我的应用程序?

注意:这不是一个Javascript问题.我不是在编程网站.我正在访问一个现有的网站,其实施是我无法控制的.这是一个WebView问题(目前在Android环境中,但也可能在其他能够托管WebView的环境中).

android webview android-webview

8
推荐指数
1
解决办法
1448
查看次数

可以为root设备授予哪些权限?

简短而简单的问题:

root设备可以在运行时为应用程序授予额外权限(我记得使用adb使用"grant permission"命令).这方面的一个例子是能够读取系统日志,这些日志从API16开始成为非用户权限(此处链接).

是否有这样的权限列表?

android root adb android-permissions

8
推荐指数
1
解决办法
9164
查看次数

如何获取其他应用程序的日志?

我想从其他应用程序中读取日志并过滤它们,以便在记录某个关键字时,我的应用程序将执行某项任务.

我找到了几种读取日志的方法,但从我的测试中我只能得到我的应用程序日志.

这是我最初尝试使用的方法

try {
  Process process = Runtime.getRuntime().exec("logcat -d");
  BufferedReader bufferedReader = new BufferedReader(
  new InputStreamReader(process.getInputStream()));

  StringBuilder log=new StringBuilder();
  String line = "";
  while ((line = bufferedReader.readLine()) != null) {
    log.append(line);
  }
  TextView tv = (TextView)findViewById(R.id.textView1);
  tv.setText(log.toString());
  } 
catch (IOException e) {}
Run Code Online (Sandbox Code Playgroud)

但它似乎只读取我的应用程序的日志.

java android android-logcat android-log

6
推荐指数
1
解决办法
732
查看次数

在 Android 上的根设备上切换 GPS

从某些 Android 版本(我认为是 2.3.x)开始,无论应用程序具有什么权限,您都无法通过 API 打开/关闭 GPS。过去,可以通过利用电源控制小部件中的错误(请参阅此处)来实现,但现在已修复。

假设我有 root 访问权限,如何打开和关闭 GPS?


编辑:是您获得读取 jelly bean 日志的权限的方式,普通应用程序不再允许读取日志。我尝试对 WRITE_SECURE_SETTINGS 权限使用类似的解决方案来切换 gps ,但它没有用。


编辑:到目前为止,我只找到了一个有效的解决方案:将应用程序转换为系统应用程序(可以在此处找到一个有效的解决方案,即使在 android 4.2.1 上也可以使用)。但是,我想到的是使用 root 从一开始就绕过它,因为 root 权限可以根据我所知道的做任何事情。

gps android root toggle

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