Skip to content
This repository has been archived by the owner on Oct 10, 2020. It is now read-only.

Permission Denial: starting Intent { act=android.intent.action.RUN flg=0x30000000 cmp=edu.umich.mobile.pharm.managehf/com.apptreesoftware.barcodescan.BarcodeScannerActivity (has extras) } #32

Closed
arzacj opened this issue Aug 9, 2018 · 3 comments

Comments

@arzacj
Copy link

arzacj commented Aug 9, 2018

I recently upgraded flutter. When I do flutter run on my app with barcode_scan on Android I get the following message:

Finished with error: Exit code 1 from: /Users/arzacjj/Library/Android/sdk/platform-tools/adb -s ZX1G22CFX4 shell am start -a android.intent.action.RUN -f 0x20000000 --ez enable-background-compilation true --ez enable-dart-profiling true --ez enable-checked-mode true --ez start-paused true edu.umich.mobile.pharm.managehf/com.apptreesoftware.barcodescan.BarcodeScannerActivity:
Starting: Intent { act=android.intent.action.RUN flg=0x20000000 cmp=edu.umich.mobile.pharm.managehf/com.apptreesoftware.barcodescan.BarcodeScannerActivity (has extras) }

java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.RUN flg=0x30000000 cmp=edu.umich.mobile.pharm.managehf/com.apptreesoftware.barcodescan.BarcodeScannerActivity (has extras) } from null (pid=15152, uid=2000) not exported from uid 10111
	at android.os.Parcel.readException(Parcel.java:1684)
	at android.os.Parcel.readException(Parcel.java:1637)
	at android.app.ActivityManagerProxy.startActivityAsUser(ActivityManagerNative.java:3137)
	at com.android.commands.am.Am.runStart(Am.java:635)
	at com.android.commands.am.Am.onRun(Am.java:388)
	at com.android.internal.os.BaseCommand.run(BaseCommand.java:51)
	at com.android.commands.am.Am.main(Am.java:121)
	at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
	at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:262)

I already have the following in my AndroidManifest.xml:

<uses-permission android:name="android.permission.CAMERA" />
<activity android:name="com.apptreesoftware.barcodescan.BarcodeScannerActivity"/>

flutter doctor:

Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel master, v0.5.8-pre.277, on Mac OS X 10.13.6 17G65, locale en-US)
[✓] Android toolchain - develop for Android devices (Android SDK 27.0.3)
[✓] iOS toolchain - develop for iOS devices (Xcode 9.4.1)
[✓] Android Studio (version 3.1)
[✓] IntelliJ IDEA Community Edition (version 2018.2.1)
[✓] Connected devices (1 available)

• No issues found!
@arzacj
Copy link
Author

arzacj commented Aug 10, 2018

After rebooting my computer the problem went away.

@arzacj arzacj closed this as completed Aug 10, 2018
@Pushan-Gupta
Copy link

Mine didn't :(

@Pushan-Gupta
Copy link

For those who are still experiencing this issue
I did 2 things:
a) Updated the gradle plugin for Kotlin as follows:
Project Level Gradle---

    buildscript {
    ext.kotlin_version = '1.2.30'
    repositories {
        google()
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.2'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

rootProject.buildDir = '../build'
subprojects {
    project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
    project.evaluationDependsOn(':app')
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

App level module---

def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
    localPropertiesFile.withReader('UTF-8') { reader ->
        localProperties.load(reader)
    }
}

def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
    throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}

def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
    flutterVersionCode = '1'
}

def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
    flutterVersionName = '1.0'
}

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

android {
    compileSdkVersion 27

    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
    }

    lintOptions {
        disable 'InvalidPackage'
    }

    defaultConfig {
        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        applicationId "vidorvistrom.barcodescanner"
        minSdkVersion 16
        targetSdkVersion 27
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            // TODO: Add your own signing config for the release build.
            // Signing with the debug keys for now, so `flutter run --release` works.
            signingConfig signingConfigs.debug
        }
    }
}

flutter {
    source '../..'
}

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

b) In the manifest file, I was declaring the activity before the main launcher activity, so I declared it AFTER THE MAIN LAUNCHER activity

as follows:


 <application
        android:name="io.flutter.app.FlutterApplication"
        android:label="barcode_scanner"
        android:icon="@mipmap/ic_launcher">
        <activity
            android:name=".MainActivity"
            android:launchMode="singleTop"
            android:theme="@style/LaunchTheme"
            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density"
            android:hardwareAccelerated="true"
            android:windowSoftInputMode="adjustResize">
            <!-- This keeps the window background of the activity showing
                 until Flutter renders its first frame. It can be removed if
                 there is no splash screen (such as the default splash screen
                 defined in @style/LaunchTheme). -->
            <meta-data
                android:name="io.flutter.app.android.SplashScreenUntilFirstFrame"
                android:value="true" />
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <activity android:name="com.apptreesoftware.barcodescan.BarcodeScannerActivity"/>


    </application>

I am sure that the b part of the process that I followed is important. You need not to use "android:exported=true" because it is just limiting the Broadcast listeners

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants