Java Code Examples for android.app.Application#getApplicationInfo()

The following examples show how to use android.app.Application#getApplicationInfo() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: AnimatorSet.java    From android_9.0.0_r45 with Apache License 2.0 6 votes vote down vote up
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;
}
 
Example 2
Source File: RemoteViews.java    From android_9.0.0_r45 with Apache License 2.0 6 votes vote down vote up
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;
}
 
Example 3
Source File: Atlas.java    From atlas with Apache License 2.0 6 votes vote down vote up
/**
 * 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);

}
 
Example 4
Source File: PluginCreator.java    From PluginLoader with Apache License 2.0 6 votes vote down vote up
/**
 * 未使用
 */
/* 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;
}
 
Example 5
Source File: CondomProcess.java    From condom with Apache License 2.0 5 votes vote down vote up
/**
 * 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);
}
 
Example 6
Source File: CondomProcess.java    From condom with Apache License 2.0 5 votes vote down vote up
/**
 * 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);
}
 
Example 7
Source File: CondomProcess.java    From MiPushFramework with GNU General Public License v3.0 5 votes vote down vote up
/**
 * 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);
}
 
Example 8
Source File: CondomProcess.java    From MiPushFramework with GNU General Public License v3.0 5 votes vote down vote up
/**
 * 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);
}
 
Example 9
Source File: RtlTestUtils.java    From material-components-android with Apache License 2.0 5 votes vote down vote up
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);
}
 
Example 10
Source File: KernalBundle.java    From atlas with Apache License 2.0 4 votes vote down vote up
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;
    }
}
 
Example 11
Source File: WrapperUtil.java    From atlas with Apache License 2.0 4 votes vote down vote up
public static boolean isDebugMode(Application application){
    final ApplicationInfo app_info = application.getApplicationInfo();
    return (app_info.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0;
}