小编Zor*_*orb的帖子

以编程方式安装来自/ system/app的具有INSTALL_PACKAGES权限的应用程序

我正在尝试以编程方式安装应用程序而无需用户交互,我收到此错误

 SecurityException: Neither user 10057 nor current process has android.permission.INSTALL_PACKAGES
Run Code Online (Sandbox Code Playgroud)

我的安装程序位于root系统上的/ system/app中,选中"安装非市场应用程序",安装程序具有权限

<uses-permission android:name="android.permission.INSTALL_PACKAGES"/>
Run Code Online (Sandbox Code Playgroud)

这是我的通话功能

 private void puk(Context context) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException{

    String fileName = PAKAGE_FILE_NAME ;
    String dir_type = Environment.DIRECTORY_DOWNLOADS;

    File dir= Environment.getExternalStoragePublicDirectory(dir_type);
    java.io.File file = new java.io.File(dir ,fileName);
    Uri packageUri = Uri.fromFile(file);

    PackageManager pm = context.getPackageManager();

    Class<? extends PackageManager> o = pm.getClass();
    Method[] allMethods=o.getMethods();

    for (Method m : allMethods) {
        if (m.getName().equals("installPackage")) { 
            Log.e(TAG, "installing the app.." );
            m.invoke(pm,new Object[] { packageUri, null, 1, "com.mic.zapp"});
            break;
        } …
Run Code Online (Sandbox Code Playgroud)

permissions installation android permission-denied

13
推荐指数
1
解决办法
8138
查看次数

从服务运行intent DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN

我有一项服务,我想要服务推广,以启用它作为设备管理员,直到现在我从服务启动这种类型的UI交互,如

    Intent intent2 = new Intent();
    intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent2.setAction(android.content.Intent.ACTION_VIEW);
    intent2.setDataAndType(uri, "application/vnd.android.package-archive");
    context.startActivity(intent2);
Run Code Online (Sandbox Code Playgroud)

它的工作原理,但使用DevicePolicyManager我找不到方法:

        Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mAdminName);
        intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,  "some text.");
        context.startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

不起作用:不要宣传任何东西,但也不要崩溃.没有intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);它只是崩溃,因为这段代码在服务内部.想法?

android task android-intent device-policy-manager

6
推荐指数
2
解决办法
6414
查看次数

有可能在运行时在php中为类变量赋值吗?

可以在运行时为一个类变量赋一个函数来执行吗?像C一样的"函数指针"

像这样的事情:(这不会起作用,因为总和超出A的范围,但这是我的意思)

 class A {
    public $function_name;
    public functon run($arg1,$arg2){
        $function_name($arg1,$arg2);
    }
}  

function sum($a,$b){
    echo $a+$b;
}

$a=new A();
$a->function_name='sum';

$a->run();     
Run Code Online (Sandbox Code Playgroud)

[编辑]我知道有"call_user_func",但我需要了解范围内的函数或使用公共类方法

php function-pointers

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

通过反射调用抽象方法

我有一个SomeTaskManager抽象方法的类runATask.我想runATask通过反射执行方法,这是我的代码:我错过了什么?

SomeTaskManager pm= (SomeTaskManager)context.getSomeTaskManager(); 
Class c = Class.forName( pm.getClass().getName() ); 

Method[] allMethods = c.getDeclaredMethods();

for (Method m : allMethods) {
    if (!m.getName().equals("runATask")) {
        continue;
    }
    m.invoke( c ,new Object[] { someParam, null, 1});
    break;
}  
Run Code Online (Sandbox Code Playgroud)

我收到了这个错误

java.lang.IllegalArgumentException: object is not an instance of the class
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at de.vogella.android.downloadmanager.DownloadManagerActivity.riflesso(DownloadManagerActivity.java:250)
at de.vogella.android.downloadmanager.DownloadManagerActivity.onCreate(DownloadManagerActivity.java:68)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1722)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1784)
at android.app.ActivityThread.access$1500(ActivityThread.java:123)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:939)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3835)
at java.lang.reflect.Method.invokeNative(Native Method)
at …
Run Code Online (Sandbox Code Playgroud)

java reflection android abstract-class abstract

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