Permission Denial: Starting Intent Not Exported From Uid
I came to this problem when I open an app which already installed in my phone from my own app . Permission Denial: starting Intent { act=android.intent.action.MAIN cat=[android.
Solution 1:
List apps = pManager.queryIntentActivities(resolveIntent, 0); more than one activity will be found.
eg:appName: QQReader ,packagename:com.qq.reader .
you will find two activities:
com.qq.reader.widget.picbrowser.PictureActivity
com.qq.reader.activity.SplashActivity
PictureActivity cannot be started,since it's exported=false, SplashActivity can be started
code modified as below:
publicstaticvoidopenApp(Activity activity,String packageName) {
PackageInfo pi;
try {
pi = activity.getPackageManager().getPackageInfo(packageName, 0);
IntentresolveIntent=newIntent(Intent.ACTION_MAIN, null);
resolveIntent.setPackage(pi.packageName);
PackageManagerpManager= activity.getPackageManager();
List<ResolveInfo> apps = pManager.queryIntentActivities(
resolveIntent, 0);
for(ResolveInfo app: apps){
Log.d(TAG,String.format("%s %s",app.activityInfo.packageName,app.activityInfo.name));
packageName = app.activityInfo.packageName;
StringclassName= app.activityInfo.name;
Intentintent=newIntent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
ComponentNamecn=newComponentName(packageName, className);
intent.setComponent(cn);
try {
activity.startActivity(intent);
}catch(SecurityException e){
e.printStackTrace();
}
}
/* ResolveInfo ri = (ResolveInfo) apps.iterator().next();
if (ri != null) {
packageName = ri.activityInfo.packageName;
String className = ri.activityInfo.name;
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
ComponentName cn = new ComponentName(packageName, className);
intent.setComponent(cn);
activity.startActivity(intent);
}*/
} catch (PackageManager.NameNotFoundException e) {
Log.e(TAG, "Package Name not found: " + e.getMessage() + ", App is not installed.");
} catch (SecurityException e){
SnackBar.newBuilder().activity(activity).
text(activity.getString(R.string.permission_denied_to_open))
.build().show();
}
}
Post a Comment for "Permission Denial: Starting Intent Not Exported From Uid"