java中的反射机制在Android开发中的用处
2022-10-17技术教程 下载本文 java ,反射 ,开发 ,机制 ,用处
JAVA反射 机制 是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java 语言的反射机制。 然而在android中Google很多的类的某些方法不让第三方应用去调用,通过java反射机制能把这些隐藏方法获取出来并调用,三方应用上我们就很方便的去用这些方法。 例如我们需要安全的杀死某个应用的服务和进程调用ActivityManager.forceStopPackage()方法很方便
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Method m =
null
;
try
{
Class c = Class.forName(
"android.app.ActivityManager"
);
m = c.getMethod(
"forceStopPackage"
, Class.forName(
"java.lang.String"
) );
m.invoke(am,
"com.tencent.mobileqq"
);
}
catch
(IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch
(ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch
(NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch
(IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch
(InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
当然隐藏了这些API是为了防止第三方应用打破其他应用程序,停止服务,消除他们的警报等等。隐藏的这些api肯定也是有系统权限的,这些权限也是被隐藏的,那么我们怎么在自己的应用里去调用这些权限呢?
1
2
3
4
5
6
7
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
manifest
xmlns:android
=
"http://schemas.android.com/apk/res/android"
package
=
"com.acer.shadow.apps"
android:versionCode
=
"1"
android:versionName
=
"1.0"
android:sharedUserId
=
"android.uid.system"
>
<
uses-permission
android:name
=
"android.permission.FORCE_STOP_PACKAGES"
/>
如上,我们只需要在AndroidManifest.xml中添加android:sharedUserId="android.uid.system"这句就能调用系统的一些隐藏权限,但是这样还不行,这个应用还得签名。 用命令行进入到目录下面输入 java -jar signapk.jar platform.x509.pem platform.pk8 ResApp.apk DesApp.apk ResApp.apk:要签名的apk DesApp.apk签名后生成的apk
java中的反射机制在Android开发 中的用处
java中的反射机制在Android开发中的用处的相关教程结束。
《java中的反射机制在Android开发中的用处.doc》
下载本文的Word格式文档,以方便收藏与打印。
java鸡兔同笼问题怎么解决
鸡兔同笼问题是一个经典的数学问题,一般通过建立方程组来解决。
假设鸡和兔的数量分别为x和y。已知鸡和兔的总数量为n,腿的总数为m,可以建立如下方程组:
x + y = n(鸡和兔的总数量为n)
2x + 4y = m(鸡的腿...
2024-05-18编程代码 java
java.util.arrays的用法是什么
java.util.Arrays类提供了一些静态方法用于操作数组,常见的用法包括:
将数组转换为字符串:使用Arrays.toString()方法将数组转换为字符串形式输出。
数组排序:使用Arrays.sort()方法对数组进行排序,默认...
2024-05-15编程代码 java
java.util.arrays的作用是什么
java.util.Arrays提供了一组静态方法,用于对数组进行各种操作,例如排序、搜索、比较等。这些方法能够简化对数组的操作,提高代码的可读性和性能。常用的方法包括:sort()、binarySearch()、equals()等。通过jav...
2024-05-15编程代码 java
java的Arrays类如何使用
Java中的Arrays类是一个包含各种数组操作方法的工具类。你可以使用Arrays类来对数组进行排序、搜索、比较、填充等操作。以下是一些常见的Arrays类的用法示例:
对数组进行排序:
int[] arr = {5, 2, 8, 1, 6};
...
2024-05-15编程代码 java
java怎么创建一个数组并赋值
在Java中创建一个数组并赋值可以通过以下步骤实现:
声明数组变量并指定数组类型和长度:
int[] nums = new int[5];
使用花括号{}来初始化数组并赋值:
int[] nums = {1, 2, 3, 4, 5};
通过循环为数组赋值...
2024-05-15编程代码 java
java怎么输出数组中最大的数
可以通过以下方法输出数组中的最大数:
public class Main {
public static void main(String[] args) {
int[] arr = {10, 5, 8, 20, 15};
int max = arr[0];
for (int i = ...
2024-05-15编程代码 java
java如何求最大值最小值
在Java中,可以使用Collections类中的min()和max()方法来求集合中的最小值和最大值。例如:
import java.util.Collections;
import java.util.ArrayList;
public class Main {
public static void main(Stri...
2024-05-15编程代码 java
java怎么求三个数的最大值
可以通过比较这三个数的大小来求出最大值,具体代码如下所示:
public int maxOfThree(int a, int b, int c) {
int max = a;
if (b > max) {
max = b;
}
if (c > max) {...
2024-05-15编程代码 java