小编POM*_*ATu的帖子

以授权的INSTALL_PACKAGES权限静默安装应用程序

我试图默默安装apk到系统中.我的应用程序位于/ system/app并成功授予权限"android.permission.INSTALL_PACKAGES"

但是我找不到任何地方如何使用此权限.我试图将文件复制到/ data/app并没有成功.我也试过使用这段代码

    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setDataAndType(
            Uri.parse("file:///sdcard/app.apk"),
            "application/vnd.android.package-archive");
    startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

但是此代码打开标准安装对话框.如何在没有root的情况下以静默方式安装app android.permission.INSTALL_PACKAGES

PS我正在编写一个应用程序,它会在第一次启动时将许多来自文件夹的apks安装到系统中(替换安装向导).我需要它来使固件更轻.

如果您认为我正在编写病毒:所有程序都安装在/ data/app中.权限Install_packages只能授予位于/ system/app中的系统级程序或使用系统密钥签名.所以病毒无法到达那里.

如上所述http://www.mail-archive.com/android-porting@googlegroups.com/msg06281.html应用程序如果具有install_packages权限,则可以进行静默安装.此外,您不需要Install_packages权限来安装软件包.另外还有http://www.androidzoom.com/android_applications/tools/silent-installer_wgqi.html

android install silent

84
推荐指数
5
解决办法
12万
查看次数

在java中恢复http文件下载

URL url = new URL("http://download.thinkbroadband.com/20MB.zip");

URLConnection connection = url.openConnection();
File fileThatExists = new File(path); 
OutputStream output = new FileOutputStream(path, true);
connection.setRequestProperty("Range", "bytes=" + fileThatExists.length() + "-");

connection.connect();

int lenghtOfFile = connection.getContentLength();

InputStream input = new BufferedInputStream(url.openStream());
byte data[] = new byte[1024];

long total = 0;

while ((count = input.read(data)) != -1) {
    total += count;

    output.write(data, 0 , count);
}
Run Code Online (Sandbox Code Playgroud)

在这段代码中我尝试恢复下载.目标文件是20MB.但是当我停止下载10mb,然后contunue时,我得到文件大小为30MB的文件.它似乎继续写入文件,但无法从服务器部分下载.Wget -c适合这个文件.如何恢复文件下载?

java android http download

56
推荐指数
3
解决办法
5万
查看次数

辅助功能服务未启动

我想在android ics(4.0.3)中记录所有toast事件,但我无法记录任何系统事件.服务还没开始!

根据这个问题: onAccessibilityEvent(AccessibilityEvent事件)没有拦截通知

MyAccessibilityService.java

package com.test.toasts2;

import android.accessibilityservice.AccessibilityService;
import android.accessibilityservice.AccessibilityServiceInfo;
import android.app.Notification;
import android.os.Parcelable;
import android.util.Log;
import android.view.accessibility.AccessibilityEvent;
import android.widget.Toast;

public class MyAccessibilityService extends AccessibilityService {


    public static final String TAG = "volumeMaster";

    @Override
    public void onAccessibilityEvent(AccessibilityEvent event)
    {
        Log.v(TAG, "***** onAccessibilityEvent");
        Toast.makeText(getApplicationContext(), "Got event from: " + event.getPackageName(), Toast.LENGTH_LONG).show();
    }

    @Override
    public void onInterrupt()
    {
        Log.v(TAG, "***** onInterrupt");
    }

    @Override
    public void onServiceConnected()
    {
        Log.v(TAG, "***** onServiceConnected");       


        AccessibilityServiceInfo info = new AccessibilityServiceInfo();
        info.eventTypes = AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED;
        info.notificationTimeout = 100; …
Run Code Online (Sandbox Code Playgroud)

android accessibility-api toast android-4.0-ice-cream-sandwich

16
推荐指数
2
解决办法
3万
查看次数

获取apk文件图标,版本,名称

有没有办法可以获得尚未安装的软件包的应用程序名称,应用程序版本和应用程序图标?(对于sdcard上的一些apk文件)

android

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

如何从Thread中textView.setText?

我需要从线程中将文本设置为textView.所有代码都是在oncreate()中创建的

就像是

public TextView pc;

    oncreate(..) {
        setContentView(R.layout.main);
        pc = new TextView(context);
        Thread t =new Thread() {
            public void run() {
                pc.setText("test");
        }};
        t.start();
Run Code Online (Sandbox Code Playgroud)

这会导致我的应用崩溃.如何从线程设置文本?

multithreading android

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

使用系统权限静默卸载应用程序

我的应用有系统权限.它将在固件内部,现在它位于/ system/app

我能用这篇文章静静地安装应用程序

以编程方式安装/卸载APK(PackageManager vs Intents)

有用的示例应用程序

http://paulononaka.wordpress.com/2011/07/02/how-to-install-a-application-in-background-on-android/

但我仍然无法以相同的方式卸载应用程序.我尝试使用像安装示例中的反射.

public ApplicationManager(Context context) throws SecurityException, NoSuchMethodException {

    observer = new PackageInstallObserver();
    pm = context.getPackageManager();

    Class<?>[] types = new Class[] {Uri.class, IPackageInstallObserver.class, int.class, String.class};
    Class<?>[] uninstalltypes = new Class[] {String.class, IPackageInstallObserver.class, int.class};
    method = pm.getClass().getMethod("installPackage", types);
    uninstallmethod = pm.getClass().getMethod("deletePackage", uninstalltypes);
}


public void uninstallPackage(String packagename) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {
        uninstallmethod.invoke(pm, new Object[] {packagename, observer, 0});
    }
    public void installPackage(Uri apkFile) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {
        method.invoke(pm, new Object[] {apkFile, observer, INSTALL_REPLACE_EXISTING, …
Run Code Online (Sandbox Code Playgroud)

android android-firmware android-4.0-ice-cream-sandwich

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

YouTube意图,错误400

我发现我可以通过以下方式在YouTube播放器中播放YouTube视频:

Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("vnd.youtube:U79wVTdnMpw")); 
startActivity(i); 
Run Code Online (Sandbox Code Playgroud)

但它不起作用.YouTube播放器已启动,但我收到错误消息:

网络出现问题[400]

我更新了YouTube应用,但没有任何变化.

我使用的是Android ICS 4.0.1.

youtube android android-intent android-4.0-ice-cream-sandwich

11
推荐指数
2
解决办法
3万
查看次数

tmux - 禁用连接/分离时的蜂鸣声

我在tmux中使用mcabber和beep选项.我希望mcabber发出哔哔声,但不希望tmux在启动,附加或分离时发出蜂鸣声.

# disable sound bell
set -g bell-action none
# disable visual bell
set -g visual-bell off
Run Code Online (Sandbox Code Playgroud)

我发现了这个,但这会禁用mcabber发出哔哔声并且不会禁用连接/分离蜂鸣声.如何在tmux中禁用附加/分离蜂鸣声?

linux bash beep tmux

10
推荐指数
1
解决办法
2059
查看次数

抓住toast事件(来自任何应用程序)并获取toast消息

据我所知,这是可能的,从这里 检测toast消息 但是我无法通过链接捕获任何带有代码片段的事件.

MyAccessibilityService.java

package com.test.toasts2;

import android.accessibilityservice.AccessibilityService;
import android.accessibilityservice.AccessibilityServiceInfo;
import android.app.Notification;
import android.os.Parcelable;
import android.view.accessibility.AccessibilityEvent;
import android.widget.Toast;

public class MyAccessibilityService extends AccessibilityService {

    @Override
    public void onAccessibilityEvent(AccessibilityEvent event) {
        System.out.println("event catched");
        Toast.makeText(this, "catched " + "!", Toast.LENGTH_SHORT).show();
        if(event.getEventType() != AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED)
            return; // event is not a notification

        String sourcePackageName = (String)event.getPackageName();

        Parcelable parcelable = event.getParcelableData();
        if(parcelable instanceof Notification){
            // Statusbar Notification
        }
        else{
            // something else, e.g. a Toast message
            String log = "Message: "+event.getText().get(0)+" [Source: "+sourcePackageName+"]";
            System.out.println(log);
            // …
Run Code Online (Sandbox Code Playgroud)

android accessibility-api toast android-4.0-ice-cream-sandwich

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

文件从未完全下载

我正在尝试下载/恢复文件.恢复似乎工作,但整个下载带来了问题.执行此代码后,testfile为5242845.但它应该是5242880!我在十六进制编辑器中打开了这两个文件,并发现测试文件最后丢失了一些字节(开始没问题).这是代码:

                String url = "http://download.thinkbroadband.com/5MB.zip";

                String DESTINATION_PATH = "/sdcard/testfile";

                URLConnection connection;

                connection = (HttpURLConnection) url.openConnection();

                File file = new File(DESTINATION_PATH);

                if (file.exists()) {
                    downloaded = (int) file.length();
                    connection.setRequestProperty("Range", "bytes=" + (file.length()) + "-");
                }
                connection.setDoInput(true);
                connection.setDoOutput(true);

                BufferedInputStream in = new BufferedInputStream(connection.getInputStream());
                FileOutputStream fos = (downloaded == 0) ? new FileOutputStream(DESTINATION_PATH) : new FileOutputStream(DESTINATION_PATH, true);
                BufferedOutputStream bout = new BufferedOutputStream(fos, 1024);
                byte[] data = new byte[1024];
                int x = 0;
                int i = 0;
                int lenghtOfFile = …
Run Code Online (Sandbox Code Playgroud)

java android http file download

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

使用后退按钮呼叫无线设置屏幕

如果在您打开 Play Market 并选择新帐户或现有帐户时没有无线连接且没有登录的 google 帐户,它会打开特定的无线设置屏幕,底部带有后退按钮。 带后退按钮的无线设置

如何从我的应用程序打开同一屏幕?谢谢

settings android android-wireless android-4.0-ice-cream-sandwich

0
推荐指数
1
解决办法
1353
查看次数