質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

Q&A

解決済

1回答

2178閲覧

xamarin KillBackgroundProcesses (String packageName)使えない

mercurian-teto

総合スコア75

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

0グッド

0クリップ

投稿2017/12/26 10:07

編集2017/12/29 02:40

前回の質問でKillbackgroundProcesses(String packageName)
(コードのリンク先はこちらです)の関数を伝授してもらったのですが、

いくら試してもエラーが発生します。

killbackgroundprocesses(string packageName)
xamarin KillBackgroundProcesses (String packageName)が使えません。

やったこと;

権限をAndroid.Manifest.xmlで宣言しました。
権限については添付先のサイトには載ってなかったので、
しらべたらたぶん

<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />

これかと思い(どのサイトでとってきたのか忘れました。すいません)
このコードをAndroid.Manifest.xmlに追加しました。
Android.Manifest.xmlが以下の通りです。

xml

1<?xml version="1.0" encoding="utf-8"?> 2<manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="offtimeoff.offtimeoff" 4 android:versionCode="1" 5 android:versionName="1.0"> 6 <uses-sdk android:minSdkVersion="21" /> 7 <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" /> 8 <application android:allowBackup="true" android:label="@string/app_name"> 9 </application> 10</manifest>

メインのプログラムです。
MainActivity.csは以下の通りです。

C#

1using Android.App; 2using Android.Widget; 3using Android.OS; 4 5 6namespace offtimeoff 7{ 8 9 [Activity(Label = "offtimeoff", MainLauncher = true)] 10  [Android.Runtime.Register("killBackgroundProcesses", "(Ljava/lang/String;)V", "GetKillBackgroundProcesses_Ljava_lang_String_Handler")] 11 12 13 14 15 public class MainActivity : Activity 16 { 17 protected override void OnCreate(Bundle savedInstanceState) 18 { 19 20 base.OnCreate(savedInstanceState); 21 22 // Set our view from the "main" layout resource 23 SetContentView(Resource.Layout.Main); 24 Button btnM = FindViewById<Button>(Resource.Id.btn); 25 26 27 btnM.Click += delegate 28 { 29 30 31 killBackgroundProcesses("co.offtime.kit"); 32 }; 33 34 } 35 } 36}

しかし
エラー CS0103
現在のコンテキストに 'killBackgroundProcesses' という名前は存在しません。
とエラーが発生してしまいます。
アセンブリのMono.Androidも追加されていたのですが、エラーが解除されません。

コード元サイトに書いてある

[Android.Runtime.Register("killBackgroundProcesses", "(Ljava/lang/String;)V", "GetKillBackgroundProcesses_Ljava_lang_String_Handler")]

ですが、とりあえずわからないので
冒頭の

[Activity(Label = "offtimeoff", MainLauncher = true)]

に似ているような気がしたので、上のように並べて記述しました。

KillBackgroundProcesses (String packageName)を動作させるのに正しい手順を教えていただけませんか。
追記1
MainActivity.cs

using Android.App; using Android.Widget; using Android.Content; using Android.OS; namespace App8 { [Activity(Label = "App8", MainLauncher = true)] public class MainActivity : Activity { protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); // Set our view from the "main" layout resource SetContentView(Resource.Layout.Main); Button btnM = FindViewById<Button>(Resource.Id.btnSayHello); TextView txtV = FindViewById<TextView>(Resource.Id.txtMsg); ActivityManager am = (ActivityManager)getSystemService(ACTIVITY_SERVICE); am.KillBackgroundProcesses("co.offtime.jp"); } } }

追記2コンパイルが通ったMainActivity.csです。

using Android.App; using Android.Widget; using Android.Content; using Android.OS; namespace App8 { [Activity(Label = "App8", MainLauncher = true)] public class MainActivity : Activity { protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); // Set our view from the "main" layout resource SetContentView(Resource.Layout.Main); Button btnM = FindViewById<Button>(Resource.Id.btnSayHello); TextView txtV = FindViewById<TextView>(Resource.Id.txtMsg); ActivityManager am = GetSystemService(Context.ActivityService) as ActivityManager; btnM.Click += delegate { am.KillBackgroundProcesses("co.offtime.lifestyle.core.blocker.BlockerService"); }; } } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

C#

1ActivityManager am = (ActivityManager)getSystemService(ACTIVITY_SERVICE); 2am.KillBackgroundProcesses(packageName);

投稿2017/12/27 03:43

Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mercurian-teto

2017/12/27 04:02

回答ありがとうございます。 現在のコンテキストにgetSystemService ACTIVITY_SERVICEは存在しません。 と出てきます。getSystemServiceの参照アセンブリ(Mono.Android) もしているのですが、どこに不備があるのでしょうか。 MainActivity.csを再度載せてあります。
Zuishin

2017/12/27 04:18

getSystemService は Context のメソッドで Activity は Context を継承しています。 MainActivity の getSystemService を呼び出してください。
mercurian-teto

2017/12/29 02:40

compileが無事通りました。 回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問