android ランチャーアプリ制作 明示的intentによるアプリの起動
初めまして。android開発初心者です。未熟者ですがどうぞ宜しくお願い致します。
androidでランチャーアプリを制作しています。
ランチャーから他のアプリは正常起動できるのに、どうしても起動できないアプリが数個あります。
色々調べましたが、どうしても解決策が見つかりません。
皆様のお力をお借りできればと思います。宜しくお願い致します。
明示的intentを発行し、以下のエラーメッセージが発生しました。
エラーメッセージ
java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.test.aqua.launcher.testapp/com.test.appwidget.AppWidgetConfigureActivity } from ProcessRecord{44e2bd 14072:com.example.myapp/u0a326} (pid=14072, uid=10326) not exported from uid 10254 android.os.Parcel.createException(Parcel.java:1969) android.os.Parcel.readException(Parcel.java:1935) android.os.Parcel.readException(Parcel.java:1885) android.app.IActivityManager$Stub$Proxy.startActivity(IActivityManager.java:3755) android.app.Instrumentation.execStartActivity(Instrumentation.java:1671) android.app.Activity.startActivityForResult(Activity.java:4586) android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:767) android.app.Activity.startActivityForResult(Activity.java:4544) android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:754) android.app.Activity.startActivity(Activity.java:4905) android.app.Activity.startActivity(Activity.java:4873) com.example.mysta.MyAdapter$ViewHolder.onClick(MyAdapter.java:144)
該当のソースコード
manifests
xml
1<?xml version="1.0" encoding="utf-8"?> 2<manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="com.example.myapp"> 4 5 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 6 <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> 7 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 8 <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 9 <uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES" /> 10 <uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" /> 11 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 12 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 13 14 <application 15 android:allowBackup="true" 16 android:icon="@mipmap/ic_launcher" 17 android:label="@string/app_name" 18 android:roundIcon="@mipmap/ic_launcher_round" 19 android:supportsRtl="true" 20 android:theme="@style/AppTheme"> 21 <activity 22 android:name=".MainActivity" 23 android:label="@string/app_name" 24 android:theme="@style/AppTheme.NoActionBar" 25 android:exported="true"> 26 <intent-filter> 27 <action android:name="android.intent.action.MAIN" /> 28 <category android:name="android.intent.category.LAUNCHER" /> 29 </intent-filter> 30 </activity> 31 32 <receiver android:name=".MyReceiver"> 33 <intent-filter> 34 <action android:name="android.intent.action.PACKAGE_FULLY_REMOVED" /> 35 <action android:name="android.intent.action.PACKAGE_ADDED" /> 36 <action android:name="android.intent.action.PACKAGE_REMOVED" /> 37 <data android:scheme="package" /> 38 </intent-filter> 39 </receiver> 40 </application> 41 42</manifest> 43
MainActivity
java
1 2PackageManager pm = getPackageManager(); 3pm.getInstalledApplications(PackageManager.GET_META_DATA); 4 5Intent intent; 6 7intent = new Intent(String.valueOf(Intent.ACTION_MAIN), null); 8 9intent.addCategory(String.valueOf(Intent.CATEGORY_LAUNCHER)); 10 11final List<ResolveInfo> ResoInfoList = pm.queryIntentActivities(intent, 0); 12 13for (ResolveInfo app : ResoInfoList) { 14 final AppData data = new AppData(); 15 ApplicationInfo appInfo = app.activityInfo.applicationInfo; 16 data.label = app.loadLabel(pm).toString(); 17 Log.d(TAG, "label:" + data.label); 18 data.pname = String.valueOf(app.activityInfo.packageName); 19 Log.d(TAG, "pname:" + data.pname); 20 data.className = app.activityInfo.name; 21 Log.d(TAG, "className:" + data.className); 22 23 }
Myadapter
java
1 2ComponentName name = new ComponentName(data.pname, data.className); 3Intent intent = new Intent(Intent.ACTION_MAIN); 4intent.addCategory(Intent.CATEGORY_LAUNCHER); 5intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | 6 Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); 7intent.setComponent(name); 8v.getContext().startActivity(intent);
宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。