android.app.PendingIntent#getCreatorPackage ( )源码实例Demo

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

源代码1 项目: cronet   文件: ApiCompatibilityUtils.java
/**
 * @see android.app.PendingIntent#getCreatorPackage()
 */
@SuppressWarnings("deprecation")
public static String getCreatorPackage(PendingIntent intent) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
        return intent.getCreatorPackage();
    } else {
        return intent.getTargetPackage();
    }
}
 
源代码2 项目: island   文件: ApiDispatcher.java
/**
 * Verify the qualification of this API invocation, mainly the permission of API caller.
 *
 * @param pkg the package name of API caller, if known.
 * @param uid the UID of API caller, not used if caller_pkg is null.
 * @return null if verified, or error message for debugging purpose (NOT part of the API protocol).
 */
static String verifyCaller(final Context context, final Intent intent, @Nullable String pkg, int uid) {
	if (pkg == null) {
		final PendingIntent id = intent.getParcelableExtra(Api.latest.EXTRA_CALLER_ID);
		if (id == null) return "Missing required PendingIntent extra: " + Api.latest.EXTRA_CALLER_ID;
		pkg = id.getCreatorPackage();
		uid = id.getCreatorUid();
		if (pkg == null) return "No creator information in " + id;
	}
	if (Users.isSameApp(uid, Process.myUid())) return null;		// From myself (possibly in other user).
	// This log should generally be placed in the caller site, do it after same app check to skip this for internal API caller with component set.
	if (intent.getPackage() == null && intent.getComponent() != null)
		Log.w(TAG, "Never use implicit intent or explicit intent with component name for API request, use Intent.setPackage() instead.");

	Log.d(TAG, "API invoked by " + pkg);
	if (SDK_INT >= M) {
		final int permission_result = context.checkPermission(Api.latest.PERMISSION_FREEZE_PACKAGE, 0, uid);
		if (permission_result == PackageManager.PERMISSION_GRANTED) return null;
	}

	// Fallback verification for API v1 clients.
	final Integer value = sVerifiedCallers.get(pkg);
	if (value == null) return "Unauthorized client: " + pkg;
	final int signature_hash = value;
	if (signature_hash == 0) return null;	// 0 means already verified (cached)

	// Legacy verification is not supported inside Island without INTERACT_ACROSS_USERS on Android P+, due to MATCH_ANY_USER being restricted.
	try { @SuppressWarnings("deprecation") @SuppressLint({"PackageManagerGetSignatures", "WrongConstant"})
		final PackageInfo pkg_info = context.getPackageManager().getPackageInfo(pkg, GET_SIGNATURES
			| (SDK_INT < P || Permissions.has(context, INTERACT_ACROSS_USERS) ? Hacks.MATCH_ANY_USER_AND_UNINSTALLED : GET_UNINSTALLED_PACKAGES));
		return verifySignature(pkg, signature_hash, pkg_info);
	} catch (final PackageManager.NameNotFoundException e) { return "Permission denied or client package not found: " + pkg; }
}
 
源代码3 项目: custom-tabs-client   文件: BrowserActionsIntent.java
/**
 * Get the package name of the creator application.
 * <p>
 * <strong> Note:</strong> This is self-reported and could be untrusted. Intent sender can
 * modify it to return the package name from a different application.
 *
 * @param intent The {@link BrowserActionsIntent}.
 * @return The creator package name.
 */
@SuppressWarnings("deprecation")
public static String getUntrustedCreatorPackageName(Intent intent) {
    PendingIntent pendingIntent = intent.getParcelableExtra(BrowserActionsIntent.EXTRA_APP_ID);
    if (pendingIntent != null) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
            return pendingIntent.getCreatorPackage();
        } else {
            return pendingIntent.getTargetPackage();
        }
    }
    return null;
}
 
源代码4 项目: Noyze   文件: MediaProviderDelegate.java
protected void updatePackage() {
    // This is an optional parameter obtained via Reflection, if possible.
    // Useful for obtaining information such as the app's icon and using it in the volume_3 panel.
    if (!IS_V18 || null == remoteMetadataProvider) return;
    LOGI(TAG, "updatePackage()");
    PendingIntent intent = remoteMetadataProvider.getCurrentClientPendingIntent();
    if (null == intent) return;
    playbackInfo.mRemotePackageName = intent.getCreatorPackage();
    if (null != metadata)
        metadata.setRemotePackage(playbackInfo.mRemotePackageName);
}
 
源代码5 项目: 365browser   文件: ApiCompatibilityUtils.java
/**
 * @see android.app.PendingIntent#getCreatorPackage()
 */
@SuppressWarnings("deprecation")
public static String getCreatorPackage(PendingIntent intent) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
        return intent.getCreatorPackage();
    } else {
        return intent.getTargetPackage();
    }
}
 
源代码6 项目: 365browser   文件: BrowserActionsIntent.java
/**
 * Get the package name of the creator application.
 * @param intent The {@link BrowserActionsIntent}.
 * @return The creator package name.
 */
@SuppressWarnings("deprecation")
public static String getCreatorPackageName(Intent intent) {
    PendingIntent pendingIntent = intent.getParcelableExtra(BrowserActionsIntent.EXTRA_APP_ID);
    if (pendingIntent != null) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
            return pendingIntent.getCreatorPackage();
        } else {
            return pendingIntent.getTargetPackage();
        }
    }
    return null;
}
 
源代码7 项目: Noyze   文件: MediaProviderDelegate.java
protected void updatePackage() {
    // This is an optional parameter obtained via Reflection, if possible.
    // Useful for obtaining information such as the app's icon and using it in the volume_3 panel.
    if (!IS_V18 || null == remoteMetadataProvider) return;
    LOGI(TAG, "updatePackage()");
    PendingIntent intent = remoteMetadataProvider.getCurrentClientPendingIntent();
    if (null == intent) return;
    playbackInfo.mRemotePackageName = intent.getCreatorPackage();
    if (null != metadata)
        metadata.setRemotePackage(playbackInfo.mRemotePackageName);
}
 
@SuppressWarnings("deprecation")
public static String packageFromPendingIntent(PendingIntent pi) {
    if (pi == null) return null;
    if (SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) {
        return pi.getTargetPackage();
    } else {
        return pi.getCreatorPackage();
    }
}
 
源代码9 项目: android_9.0.0_r45   文件: AlarmManagerService.java
private final BroadcastStats getStatsLocked(PendingIntent pi) {
    String pkg = pi.getCreatorPackage();
    int uid = pi.getCreatorUid();
    return getStatsLocked(uid, pkg);
}
 
@Override
public void onReceive(Context context, Intent intent) {
    //PPApplication.logE("##### NextAlarmClockBroadcastReceiver.onReceive", "xxx");

    //CallsCounter.logCounter(context, "NextAlarmClockBroadcastReceiver.onReceive", "NextAlarmClockBroadcastReceiver_onReceive");

    if (intent == null)
        return;

    //if (!PPApplication.getApplicationStarted(context.getApplicationContext(), true))
    //    return;

    //if (android.os.Build.VERSION.SDK_INT >= 21) {
        String action = intent.getAction();
        if ((action != null) && action.equals(AlarmManager.ACTION_NEXT_ALARM_CLOCK_CHANGED)) {
            AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
            if (alarmManager != null) {
                AlarmManager.AlarmClockInfo alarmClockInfo = alarmManager.getNextAlarmClock();
                if (alarmClockInfo != null) {
                    long _time = alarmClockInfo.getTriggerTime();
                    /*if (PPApplication.logEnabled()) {
                        SimpleDateFormat sdf = new SimpleDateFormat("EE d.MM.yyyy HH:mm:ss:S");
                        String result = sdf.format(_time);
                        PPApplication.logE("NextAlarmClockBroadcastReceiver.onReceive", "_time=" + result);
                    }*/

                    PendingIntent infoPendingIntent = alarmClockInfo.getShowIntent();
                    // infoPendingIntent == null - Xiaomi Clock :-/
                    // infoPendingIntent == null - LG Clock :-/
                    // infoPendingIntent == null - Huawei Clock :-/

                    if (infoPendingIntent != null) {
                        String packageName = infoPendingIntent.getCreatorPackage();
                        //PPApplication.logE("NextAlarmClockBroadcastReceiver.onReceive", "packageName=" + packageName);
                        if (packageName != null) {
                            if (!packageName.equals(context.getPackageName())) {
                                //PPApplication.logE("NextAlarmClockBroadcastReceiver.onReceive", "packageName=" + packageName);

                                // com.google.android.deskclock - Google Clock
                                // com.sec.android.app.clockpackage - Samsung Clock
                                // com.sonyericsson.organizer - Sony Clock
                                // com.amdroidalarmclock.amdroid - AMdroid
                                // com.alarmclock.xtreme.free - Alarm Clock XTreme free
                                // com.alarmclock.xtreme - Alarm Clock XTreme
                                // droom.sleepIfUCan - Alarmy (Sleep if u can)
                                // com.funanduseful.earlybirdalarm - Early Bird Alarm Clock
                                // com.apalon.alarmclock.smart - Good Morning Alarm Clock
                                // com.kog.alarmclock - I Can't Wake Up! Alarm Clock
                                // com.urbandroid.sleep - Sleep as Android
                                // ch.bitspin.timely - Timely
                                // com.angrydoughnuts.android.alarmclock - Alarm Klock

                                /*if (packageName.equals("com.google.android.deskclock") ||
                                    packageName.equals("com.sec.android.app.clockpackage") ||
                                    packageName.equals("com.sonyericsson.organizer") ||
                                    packageName.equals("com.amdroidalarmclock.amdroid") ||
                                    packageName.equals("com.alarmclock.xtreme") ||
                                    packageName.equals("com.alarmclock.xtreme.free") ||
                                    packageName.equals("droom.sleepIfUCan") ||
                                    packageName.equals("com.funanduseful.earlybirdalarm") ||
                                    packageName.equals("com.apalon.alarmclock.smart") ||
                                    packageName.equals("com.kog.alarmclock") ||
                                    packageName.equals("com.urbandroid.sleep") ||
                                    packageName.equals("ch.bitspin.timely") ||
                                    packageName.equals("com.angrydoughnuts.android.alarmclock"))*/

                                    setAlarm(_time, packageName, alarmManager, context);
                            }
                        } /*else {
                            //PPApplication.logE("NextAlarmClockBroadcastReceiver.onReceive", "packageName == null");
                            setAlarm(_time, "", alarmManager, context);
                        }*/
                    } /*else {
                        //PPApplication.logE("NextAlarmClockBroadcastReceiver.onReceive", "infoPendingIntent == null");
                        setAlarm(_time, "", alarmManager, context);
                    }*/
                }
                //else {
                    //PPApplication.logE("NextAlarmClockBroadcastReceiver.onReceive", "alarmClockInfo == null");
                    //removeAlarm(alarmManager, context);
                //}
            }
        }
    //}
}