android.app.Application#getApplicationInfo ( )源码实例Demo

下面列出了android.app.Application#getApplicationInfo ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: android_9.0.0_r45   文件: AnimatorSet.java
public AnimatorSet() {
    super();
    mNodeMap.put(mDelayAnim, mRootNode);
    mNodes.add(mRootNode);
    boolean isPreO;
    // Set the flag to ignore calling end() without start() for pre-N releases
    Application app = ActivityThread.currentApplication();
    if (app == null || app.getApplicationInfo() == null) {
        mShouldIgnoreEndWithoutStart = true;
        isPreO = true;
    } else {
        if (app.getApplicationInfo().targetSdkVersion < Build.VERSION_CODES.N) {
            mShouldIgnoreEndWithoutStart = true;
        } else {
            mShouldIgnoreEndWithoutStart = false;
        }

        isPreO = app.getApplicationInfo().targetSdkVersion < Build.VERSION_CODES.O;
    }
    mShouldResetValuesAtStart = !isPreO;
    mEndCanBeCalled = !isPreO;
}
 
源代码2 项目: android_9.0.0_r45   文件: RemoteViews.java
private static ApplicationInfo getApplicationInfo(String packageName, int userId) {
    if (packageName == null) {
        return null;
    }

    // Get the application for the passed in package and user.
    Application application = ActivityThread.currentApplication();
    if (application == null) {
        throw new IllegalStateException("Cannot create remote views out of an aplication.");
    }

    ApplicationInfo applicationInfo = application.getApplicationInfo();
    if (UserHandle.getUserId(applicationInfo.uid) != userId
            || !applicationInfo.packageName.equals(packageName)) {
        try {
            Context context = application.getBaseContext().createPackageContextAsUser(
                    packageName, 0, new UserHandle(userId));
            applicationInfo = context.getApplicationInfo();
        } catch (NameNotFoundException nnfe) {
            throw new IllegalArgumentException("No such package " + packageName);
        }
    }

    return applicationInfo;
}
 
源代码3 项目: atlas   文件: Atlas.java
/**
 * Init the framework
 * 
 * @param application
 * @return
 * @throws Exception
 */
public void init(Application application,boolean reset) throws AssertionArrayException, Exception {
    if(application==null){
        throw new RuntimeException("application is null,atlas init failed!");
    }
    ApplicationInfo app_info = application.getApplicationInfo();
    sAPKSource = app_info.sourceDir;
    RuntimeVariables.androidApplication = application;
    RuntimeVariables.delegateResources  = application.getResources();
    Framework.containerVersion = RuntimeVariables.sInstalledVersionName;
    ClassLoader cl = Atlas.class.getClassLoader();
    Framework.systemClassLoader = cl;
    // defineAndVerify
    String packageName = application.getPackageName();

    RuntimeVariables.delegateClassLoader = Atlas.class.getClassLoader();

    frameworkLifecycleHandler = new FrameworkLifecycleHandler();
    Framework.frameworkListeners.add(frameworkLifecycleHandler);

}
 
源代码4 项目: PluginLoader   文件: PluginCreator.java
/**
 * 未使用
 */
/* package */static Resources createPluginResourceFor5(Application application, String absolutePluginApkPath) {
	try {
		AssetManager assetMgr = AssetManager.class.newInstance();
		Method addAssetPaths = AssetManager.class.getDeclaredMethod("addAssetPaths", String[].class);

		String[] assetPaths = new String[2];

		// 不可更改顺序否则不能兼容4.x
		assetPaths[0] = absolutePluginApkPath;
		assetPaths[1] = application.getApplicationInfo().sourceDir;

		addAssetPaths.invoke(assetMgr, new Object[] { assetPaths });

		Resources mainRes = application.getResources();
		Resources pluginRes = new PluginResourceWrapper(assetMgr, mainRes.getDisplayMetrics(),
				mainRes.getConfiguration());

		PaLog.d("create Plugin Resource from: ", assetPaths[0], assetPaths[1]);

		return pluginRes;
	} catch (Exception e) {
		e.printStackTrace();
	}
	return null;
}
 
源代码5 项目: condom   文件: CondomProcess.java
/**
 * Install the condom protection for current process if it is not the default process.
 *
 * <p>This method must be called in {@link Application#onCreate()} to eliminate potential leakage.
 */
public static void installExceptDefaultProcess(final Application app, final CondomOptions options) {
	validateCondomOptions(options);
	final String current_process_name = getProcessName(app);
	if (current_process_name == null) return;
	final String default_process_name = app.getApplicationInfo().processName;
	if (! current_process_name.equals(default_process_name)) install(app, current_process_name, options);
}
 
源代码6 项目: condom   文件: CondomProcess.java
/**
 * Install the condom protection for current process if its process name matches. This method should be called in {@link Application#onCreate()}.
 *
 * @param process_names list of processes where Condom process should NOT be installed, in the form exactly as defined
 *                      by <code>"android:process"</code> attribute of components in <code>AndroidManifest.xml</code>.
 *                      <b>BEWARE: Default process must be explicitly listed here if it is expected to be excluded.</b>
 */
public static void installExcept(final Application app, final CondomOptions options, final String... process_names) {
	if (process_names.length == 0) throw new IllegalArgumentException("At lease one process name must be specified");
	validateCondomOptions(options);
	final String current_process_name = getProcessName(app);
	if (current_process_name == null) return;
	for (final String process_name : process_names)
		if (! current_process_name.equals(getFullProcessName(app, process_name))) {
			install(app, current_process_name, options);
			return;
		}

	if ((app.getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0) validateProcessNames(app, process_names);
}
 
源代码7 项目: MiPushFramework   文件: CondomProcess.java
/**
 * Install the condom protection for current process if it is not the default process.
 *
 * <p>This method must be called in {@link Application#onCreate()} to eliminate potential leakage.
 */
public static void installExceptDefaultProcess(final Application app, final CondomOptions options) {
	validateCondomOptions(options);
	final String current_process_name = getProcessName(app);
	if (current_process_name == null) return;
	final String default_process_name = app.getApplicationInfo().processName;
	if (! current_process_name.equals(default_process_name)) install(app, current_process_name, options);
}
 
源代码8 项目: MiPushFramework   文件: CondomProcess.java
/**
 * Install the condom protection for current process if its process name matches. This method should be called in {@link Application#onCreate()}.
 *
 * @param process_names list of processes where Condom process should NOT be installed, in the form exactly as defined
 *                      by <code>"android:process"</code> attribute of components in <code>AndroidManifest.xml</code>.
 *                      <b>BEWARE: Default process must be explicitly listed here if it is expected to be excluded.</b>
 */
public static void installExcept(final Application app, final CondomOptions options, final String... process_names) {
	if (process_names.length == 0) throw new IllegalArgumentException("At lease one process name must be specified");
	validateCondomOptions(options);
	final String current_process_name = getProcessName(app);
	if (current_process_name == null) return;
	for (final String process_name : process_names)
		if (! current_process_name.equals(getFullProcessName(app, process_name))) {
			install(app, current_process_name, options);
			return;
		}

	if ((app.getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0) validateProcessNames(app, process_names);
}
 
public static void checkAppSupportsRtl() {
  Application application = ApplicationProvider.getApplicationContext();
  ApplicationInfo info = application.getApplicationInfo();
  boolean supportsRtl = (info.flags & ApplicationInfo.FLAG_SUPPORTS_RTL) != 0;
  assertThat(supportsRtl).isTrue();
  assertThat(info.targetSdkVersion).isGreaterThan(16);
}
 
源代码10 项目: atlas   文件: KernalBundle.java
public static boolean checkLoadKernalDebugPatch(Application application) {
    if (Build.VERSION.SDK_INT < 21) {
        //暂时只支持art设备的debug调试
        return false;
    }

    boolean loadKernalPatch = false;
    try {
        ApplicationInfo app_info = application.getApplicationInfo();
        boolean debug = (app_info.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0;
        if (debug) {
            File debugBundleDir = new File(KernalConstants.baseContext.getExternalFilesDir("debug_storage"), KERNAL_BUNDLE_NAME);
            File patchFile = new File(debugBundleDir, "patch.zip");
            if (patchFile.exists()) {
                loadKernalPatch = true;
                KernalBundle bundle = new KernalBundle();
                //DexFile dexFile = (DexFile) KernalConstants.dexBooster.loadDex(KernalConstants.baseContext, KernalConstants.baseContext.getApplicationInfo().sourceDir,
                //        new File(patchFile.getParent(), "base.dex").getAbsolutePath(), 0, true);

                File internalDebugBundleDir = new File(new File(application.getFilesDir(), "debug_storage"), KERNAL_BUNDLE_NAME);
                internalDebugBundleDir.mkdirs();
                DexFile patchDexFile = (DexFile) DexFile.loadDex(patchFile.getAbsolutePath(),new File(internalDebugBundleDir, "patch.dex").getAbsolutePath(), 0);
                if (bundle.needReplaceClassLoader(application)) {
                    NClassLoader loader = new NClassLoader(".", KernalBundle.class.getClassLoader().getParent());
                    try {
                        NClassLoader.replacePathClassLoader(KernalConstants.baseContext, KernalBundle.class.getClassLoader(), loader);
                    } catch (Exception e) {
                        throw new RuntimeException(e);
                    }
                }
                bundle.installKernalBundle(KernalConstants.baseContext.getClassLoader(), patchFile, new DexFile[]{patchDexFile/*, dexFile*/}, null,
                    true /*(app_info.flags & ApplicationInfo.FLAG_VM_SAFE_MODE) != 0*/);
                bundle.prepareRuntimeVariables(application);
                Class DelegateResourcesClazz = application.getClassLoader().loadClass("android.taobao.atlas.runtime.DelegateResources");
                DelegateResourcesClazz.getDeclaredMethod("addApkpatchResources", String.class)
                        .invoke(DelegateResourcesClazz, patchFile.getAbsolutePath());
                Toast.makeText(KernalConstants.baseContext, "当前处于DEBUG调试状态,不支持动态更新,清除数据可恢复", Toast.LENGTH_LONG).show();
            }
        }
    } finally {
        return loadKernalPatch;
    }
}
 
源代码11 项目: atlas   文件: WrapperUtil.java
public static boolean isDebugMode(Application application){
    final ApplicationInfo app_info = application.getApplicationInfo();
    return (app_info.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0;
}